先日作ったsjsp
ですが、その挙動も安定し、最低限必要かと思われるオプションを作ったので、最初の安定版リリースとして0.1.0というタグを打ちました。
同時に、Hackageにもアップロードしました。
sjsp: Simple JavaScript Profiler
これでGitHubからcloneしなくても、cabalコマンドでインストールできるようになりました。
$ sudo cabal update $ sudo cabal install sjsp
happy
やalex
をインストールしているにもかかわらず、happy/alex
に関するエラーが出るときは、PATHにcabalのbinパスを追加するか
$ export PATH=$PATH:$HOME/.cabal/bin
あるいは実行ファイルを$PATH
の中のどこかに置いて下さい
$ sudo cp `which happy` /usr/local/bin $ sudo cp `which alex` /usr/local/bin
リリースした時のブログ記事を書いた時点からの変更は次のようになります。
バグ修正
- cabal 依存関係修正 (happy, alex)
- 関数が呼ばれた回数の初期値修正
return
の中でarguments
を使用された場合にうまく動作しなかったのを修正- 列番号が
{
の位置になっていたのをfunction
の位置に修正 - 関数の実行にかかっていた時間が10倍間違っていたのを修正
機能改善
- 各プロファイリング結果の報告で
console.log
を一回だけ呼ぶように変更 - 例外
throw
文にも対応 - プロファイリング結果の見た目改善
- 一行が長いファイルを変換するとファイルが肥大化することを抑えるため、行情報を240文字までにカット
- 時間は小数点以下三桁表示するように
オプション追加
-a
--accurate
が指定された時は、Date.now()
の代わりにperformance.now()
を使用するように-n
--number
プロファイリング結果を何行表示するかを設定可能に (デフォルト20)-t
--time
が指定された時は、関数の実行にかかった時間によるプロファイリング結果を報告するように (デフォルトでオン、-c
,--count
が指定されこのオプションが指定されない時はオフ)-c
--count
が指定された時は、関数が呼ばれた回数によるプロファイリング結果を報告するように (デフォルトでオン、-t
,--time
が指定されこのオプションが指定されない時はオフ)
リファクタリング
Data.Generics
のeverywhere
関数を用いることで、冗長なコードを削除- 推奨されない関数の削除
- プロファイラのコードを別ファイルにし、私が編集しやすく
パフォーマンス改善
+new Date
の代わりにDate.now()
を使用するように
その他
stack
でインストールできるようになり、Haskellがインストールされていない環境でもsjsp
をインストールできるようになりました。詳しくは GitHub - itchyny/sjsp: Simple JavaScript Profiler を御覧ください。
これからもsjsp
をよろしくお願いします。
バグ報告はGitHubのissuesよりお願いします。