ベンチコードの返り値を自動的にチェックする Benchmark::Confirm
ベンチマークとるときに、ベンチコード群の返り値を確認するのがわりと面倒くさい。
ということで、ちょっと前に Benchmark への パッチ書いてみてた んですが、どう見ても違和感満点だったわけです。。。
まあ、このパッチ取り込まれるわけないだろうし(当然送ってませんよ ;-D)、値のチェックがいい加減すぎだろとか、、とはいえ、やっぱり毎度手動でチェックするのは雛形用意まではしたけどだるいな、ってことで、こんな感じでどうじゃろというのがかたちにできたので、github にあげました。
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 Benchmark
を use Benchmark::Confirm
してももちろん使えますが、Benchmark::Confirm 自体は開発時しか必要ないと思いますので、上記のような使い方が便利かと思います。