先日作った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よりお願いします。