benchmark

my と state のパフォーマンス比較

最近の Linux ディストリビューションの perl は 5.10 以上になってきた感じなので、最近は state など新しい機能を使うようになってきました。そこでちょっと気になったので state のパフォーマンスを計測してみました。ベンチマークコードは以下。動作が全…

Perl で時刻の文字列を生成する速い方法

DateTime が重くて遅いのは周知ですが、一応どれくらい差が出るかベンチマーク。「2010-07-01 15:10:53」みたいなフォーマットのタイムスタンプ文字列を生成したい場合です。DateTime はオブジェクトをキャッシュして使い回しても相当遅いです。POSIX はコア…

HTML タグをエスケープする方法 3 通りと速度比較

HTML::Entities を使う方法と、正規表現を段階的に使う方法と、変換テーブルを用意して正規表現で置換する方法と、どれが一番速いか気になったので計測してみました。& から順番に変換していく方法が一番速かったです。ベンチマークスクリプトは以下です。 R…

例外捕捉モジュール Try::Tiny のベンチマーク

Yuval Kogman 氏が Try::Tiny という新しい例外捕捉モジュールをリリースしたようなので、ベンチマークを取ってみました。ベンチマークコードは、Error.pm のオーバーヘッドで書いたものを流用しました。

馬鹿にできないアクセサのオーバーヘッド

Moose は has でアクセサ定義できるので便利なのですが、アクセサは要はサブルーチンコールなので、パフォーマンス気にして作っているサービスではオーバーヘッドが気になるなぁと思い、ちょっとベンチ取ってみました。ベンチマーク対象は、Moose で作成した…

空文字列比較は eq/ne と length のどっちが速いか

最近、空文字列のチェックの際に、面倒臭くて $_ eq '' の代わりに、空文字列だと length が偽を返すことを利用して、自分しか見ないようなソースでは以下のように書くことが多いのですが、 return unless defined and length; パフォーマンス的には、$_ ne …

スピード対決 TIMESTAMP vs INTEGER

時間のカラムに TIMESTAMP を使って、PostgreSQL (8.3.7) に時間を計算させるのと、INTEGER でエポックを入れておいて、perl 側で時間計算をして SELECT するのと、どちらが速いのかふと気になってベンチマークを取ってみました。10万件のランダムな日時なレ…

Error.pm のオーバーヘッド

Error モジュールが例外処理を書くのに便利そうだなと思って、採用する前にオーバーヘッドがどれくらいあるのかと思い調べてみました。