Remote YAPC Hackathon - DateTime::Format::Pg && Params::Validate

| コメント(0) | トラックバック(0)



Hackathonにはなんかいかない方向になってきたのと、早く起きてしまったのでとりあえず少しハックしてた。


まず朝方にRTからバグレポートが来てたのでDateTime::Format::Pgをフィックス。こちらはCPANにすでにあげた。


あとはParams::Validateハックしてみた。Params::ValidateはNO_VALIDATIONというオプションがあって、コードを書いている人のほうが決め打ちで「絶対に平気」な値を渡す場合のように特にvalidationを行う必要がない時に使えるオプションがある。


残念ながらNO_VALIDATIONをオンにしてもコードパスがほぼ一緒なのでたいしたパフォーマンスの差が出ない:



daisuke@beefcake Params-Validate$ perl benchmark.pl
Rate validate_on validate_off
validate_on 2404/s -- -19%
validate_off 2985/s 24% --

というわけでNO_VALIDATIONが有効な時にはコードをショートサーキットして、その辺りをすっ飛ばして処理するようにしてみた:



daisuke@beefcake Params-Validate$ perl benchmark.pl
Rate validate_on validate_off
validate_on 2597/s -- -30%
validate_off 3731/s 44% --

30%ほどの差。ちなみにこれであちこちにちりばめられたno_validation()の使用を全体で4個までにおさめられるので分岐が減り、ベースパフォ-マンスも5%くらいあがるよう。PatchはとりあえずHackathon参加中のDaveに送っておいた。


(追記)Params::Validate 0.81でこれがアップされた。


Author

Daisuke Maki (a.k.a lestrrat): Perl hacker, Director of Japan Perl Association, YAPC::Asia Tokyo Organizer (2009-2012), Fluent in Japanese, English. Ex-Brazilian (sorta)

#perl #c #ruby #java #mysql #english #japanese #opensource #stf #cooking #scotch #cigar


このエントリーをはてなブックマ
ークに追加

翔泳社よりモダンPerl入門(2010)を出版させていただいております。できれば内容をアップデートしたいので是非皆様・・・現在の在庫処理にお力をお貸しください!><

月別アーカイブ