pockestrap

Web Programmer's memo

benchcmp-vcs つくった

pocke/benchcmp-vcs · GitHub


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 以外使っていないので特に対応する予定はないのですが、そのうち気分がノッたら実装します。