ためいきとシリアライズ
キャッシュしよう
http://perl-users.jp/articles/advent-calendar/2008/23.html
残念ながらオリジナルのDateTimeよりも遅くなってしまいました。約半分の速度に落ちました。
わかってはいたことなんですが、このベンチマークは悔しい・・・
正直オブジェクトでのベンチは見て見ぬフリをしていました。っていうのがすでに甘いですね。
Method::Cached でパフォーマンス・チューニングする際の勘所は以下の2点かと思っていて、
- データをシリアライズする際のコスト
- メソッドの呼び出し元のパラメータをシリアライズする際のコスト
- 単純なスカラーの配列であれば連結するだけだが、$self のメンバメソッドだった場合に一気に面倒なことになる(現状はユーザー定義におまかせして逃げている
そのどちらにも悩まされていました。
中量級なクエリをキャッシュできればまぁいいかな、という想定が甘かったことを認識しました。。。
精進します。
ちなみに余談ですが、このモジュールのデフォルトでの組み込みは Cache::FastMmap になっていますが、実際に自分が使う際は Cache::Memcached( ::Fast )だったりするので無難なインターフェースとして get / set / delete or clear を選んでいます。
さらにさらに余談を言ってしまうと。
svn head では mod_perl でも無理やり動くようにしてみてました。
現状 CPAN にあげてあるものだと動いていなかったという事実。