2020/05/25

Perl のベンチマーク集をGithub Actionsで回す Acme

タイトルがすべてなのですが、CIでベンチマークがじゃんじゃん回ってみんながベンチマークのソースいじりやすくて、あと例えば Awesome Perl に挙がってるようなモジュールのベンチ比較が共有できれば、みんな手間が省けていいんじゃないかなと思ったのでモジュールにしてみた。

Acme::Benchmarks

正直、モジュールになってる意味はあんまりないかなと思ってまだCPANにはあげていないのだけど、Perlだし、Acmeだし、そのうちうっかりCPANにあげられる体裁はととのえてある。どちらかというとCIに対して挑戦的なことをやっているかもしれないけど、それなりに無駄に回さないような配慮はしていきたいと思っている。

もともと10年もののbenchmarkリポジトリが手元にあって、正直マイクロチューニングの山だったりするのだけど、ある程度ベストプラクティスの裏付けになるような価値のありそうなベンチマークはなんかそのうち形にしたいなと思っていた。

速さをうたうモジュールは個別にベンチマークスクリプトが付属していたりするのだけど、そういうのを中立的に集められるといいなと思っている。といいながら中立的であるためにどのようにかガイドラインがあった方がいいと思ったりしてるのだけど、いまのところもうちょい体裁を整える方に時間を使っている。

で、実際に Github Actions でまわっているベンチマークはCIのログで見れます。例えば以下の CI結果の Run benchmarks を開くと見れる。

https://github.com/bayashi/Acme-Benchmarks/runs/701415409

ベンチマークは Linux と Windows と Mac と3 OSで回していて、OS依存で回せないベンチマークは個別に外せるように仕組みができてる。Linux だけ複数Perlバージョンでベンチマークが走る。

いまのところの課題は、ベンチ結果を Github Pages で publish したいけど、力尽きてる。

いずれにしろ Router::R3 が速すぎてびびるということ。

サイト内検索