Go 言語には、benchcmp
というベンチマークテストの結果を比較するツールが存在します。
しかし、このツール単独では使用者が比較したいバージョン同士でテストコマンドを叩き、その結果をファイルとして保存する必要があります。
若干めんどくさいので、そこをよろしくやってくれるツールを作りました。
インストール
go get -u golang.org/x/tools/cmd/benchcmp
go get github.com/pocke/benchcmp-vcs
benchcmp
コマンドが入っている必要があるので、それもインストールします。
使い方
$ cd YOUR_REPOSITORY_PATH/ $ benchcmp-vcs old revision: 1811c66af7ba48ab8f34b8bda2476ff3198f0ace new revision: b71cc3ac54e6f045690e30a5d6ba48df1d30f0e5 benchmark old ns/op new ns/op delta BenchmarkBuild 24716 16021 -35.18% benchmark old allocs new allocs delta BenchmarkBuild 305 5 -98.36% benchmark old bytes new bytes delta BenchmarkBuild 3053 2749 -9.96%
レポジトリにcd
して、1コマンド叩けば終わりです。簡単!
これをそのままコピーして Pull Request に貼り付けたりしたらクールですね!
基本的には現在のリビジョンと一つ前のリビジョンを比較します。 またコミットされていない変更があれば、現状と最後のコミットを比較します。
下記のようなコマンドが自動で叩かれます。
$ go test -run=NONE -bench=. -benchmem > new.txt $ git checkout HEAD~ $ go test -run=NONE -bench=. -benchmem > old.txt $ go checkout master $ benchcmp old.txt new.txt $ rm old.txt new.txt
べんり!
TODO とか
コマンドラインオプションが指定できない
とかとか野望はあります。そのうち実装予定。
英語
README とかてきとー英語で書いてあるのでつらい(つらい)
Git 以外の VCS
私は git 以外使っていないので特に対応する予定はないのですが、そのうち気分がノッたら実装します。