2013/03/21

ベンチコードの返り値を自動的にチェックする Benchmark::Confirm

ベンチマークとるときに、ベンチコード群の返り値を確認するのがわりと面倒くさい。
ということで、ちょっと前に Benchmark への パッチ書いてみてた んですが、どう見ても違和感満点だったわけです。。。

まあ、このパッチ取り込まれるわけないだろうし(当然送ってませんよ ;-D)、値のチェックがいい加減すぎだろとか、、とはいえ、やっぱり毎度手動でチェックするのは雛形用意まではしたけどだるいな、ってことで、こんな感じでどうじゃろというのがかたちにできたので、github にあげました。

Benchmark::Confirm

Benchmark::Confirm

使い方は、超絶かんたん!!

以下のように use Benchmark してるスクリプトを以下のように実行している場合、、

perl some_benchmark.pl

以下のように、Benchmark::Confirm を -M に指定するだけで OK

perl -MBenchmark::Confirm some_benchmark.pl

すると、ベンチマーク後、それぞれベンチマークコードの返り値を比較して ok or not ok という風にテストと同じように勝手に確認してくれます。

Benchmark: timing 350000 iterations of Encode, Unicode::UTF8...
       Encode:  5 wallclock secs ( 4.51 usr +  0.01 sys =  4.52 CPU) @ 77433.63/s (n=350000)
Unicode::UTF8:  1 wallclock secs ( 0.73 usr +  0.00 sys =  0.73 CPU) @ 479452.05/s (n=350000)
                  Rate        Encode Unicode::UTF8
Encode         77434/s            --          -84%
Unicode::UTF8 479452/s          519%            --
ok 1
ok 2
1..2

スクリプト内の use Benchmarkuse Benchmark::Confirm してももちろん使えますが、Benchmark::Confirm 自体は開発時しか必要ないと思いますので、上記のような使い方が便利かと思います。

サイト内検索