Mvalveをリリースして、色々機能改善をする前にベンチマークを書こうと思いました。なのでまずQueue::Q4Mにてベンチマークですよ。

Queue::Q4M 0.00007のmiscディレクトリ内にベンチマークがあります。ってことで、以下の条件でベンチマーク走らせてみました

  1. ストレートに1000件入力してから1000件全部conditional無しで抽出する
  2. 1000件+その約50倍のダミーデータの中から、conditionalにマッチする1000件を全部抽出する
という2パターンで実験した結果が以下の通り

>> executing default + Start Tue Jul 8 01:54:44 2008 + End Tue Jul 8 01:54:53 2008 + Processed 1000 messages in 8.18263006210327 secs, average 0.00818263006210327 mess/sec >> executing conditional + Start Tue Jul 8 01:54:53 2008 + End Tue Jul 8 01:55:00 2008 + Created 1000 items and 49824 dummies (dummy rate = 0.98) + Processed 1000 messages in 7.57972812652588 secs, average 0.00757972812652588 mess/sec
おお、遜色ない!SUGEEE。

その後id:kazuhoさんと話した結果、こういう使い方をするとあとでデータ圧縮が走るときに大分時間かかるかも、だそうです。それはそれでまた考えて使わないといけないですな。

ちなみにコンパクションが走るタイミングは.q4mファイルが16MB以上、かつそのファイル内の空き容量が75%以上ある時だそうです。いつこれが起こるかはアプリケーション依存ですな。でも必ず起こるそうです。