開発中のPerlのモジュールでブランチ間をまたいでベンチマークを取る
ほぼ100%藤原さんの記事の受け売りですが……
[perl] Perlで同じコードを違うバージョンのモジュールでベンチマークする - 酒日記 はてな支店
モジュールを開発している時に,フィーチャブランチの変更が性能に対してどれくらい影響を及ぼしているかを調べたくなる時があると思います.
それやるの面倒くさそうだなー,と思ったんですが割と楽ちんだったので書いておくことにします.
手順としては,藤原さんの記事とほぼ同じで,
- 対象となるブランチ (例えばmasterとかdevとか) にcheckout
cpanm . -l master -n
等でモジュールをextlibにインストール (masterは任意の名前)- もう1つの対象となるブランチ (例えばfeatureとかhotfix) にcheckout
- cpanm等でextlibにインストール
- Benchmark::Forkingを使ってベンチマークスクリプトを書いて実行
という感じです.cpanmは.
を指定するとカレントディレクトリのモジュールをインストールしてくれるので,
それと-l
オプションを組み合わせてローカルの任意の位置にインストールしてやるというのがミソというか,それが全てです.
一連の流れを書くとこんな感じです.
$ git checkout master && cpanm . -l master -n $ git checkout feature && cpanm . -l feature -n $ vi benchmark.pl $ perl benchmark.pl
で,これ実行してやると,
Rate master feature master 12821/s -- -6% feature 13699/s 7% --
という具合に結果が出てくれる訳ですね.簡単便利!