先輩! 仕事で疲れた脳を休めようと、先ほどlibmemcachedが備えているno_blockをCache::Memcached::LibMemcachedからも設定できるようにしてみたんです。で、ベンチマークを取ってみたところ・・・
daisuke@beefcake Cache-Memcached-LibMemcached$ perl -Mblib tools/benchmark.pl ==== Benchmark "Simple set() (scalar)" ==== (warning: too few iterations for a reliable count) Rate perl_memcahed memcached_fast libmemcached libmemcached_no_block perl_memcahed 7396/s -- -60% -77% -99% memcached_fast 18382/s 149% -- -42% -98% libmemcached 31646/s 328% 72% -- -97% libmemcached_no_block 1000000/s 13420% 5340% 3060%
なんですかこれ!速すぎて計測できない言われてる! やばいよ!
もちろん非同期モードで書き込み始めると戻り値を確認しないで書き続けるので速いのは当たり前っちゃあ当たり前なんだが、それにしてもこんな差がでるとは。

ちゃんとした値を取りたいのでset()を呼ぶ数を10倍にしてみました。結果:
daisuke@beefcake Cache-Memcached-LibMemcached$ perl -Mblib tools/benchmark.pl ==== Benchmark "Simple set() (scalar)" ==== Rate perl_memcahed memcached_fast libmemcached libmemcached_no_block perl_memcahed 6961/s -- -62% -78% -99% memcached_fast 18437/s 165% -- -42% -98% libmemcached 31827/s 357% 73% -- -97% libmemcached_no_block 1086957/s 15515% 5796% 3315% --
すげぇえええええええ!

自分的にはまった?部分はどうもmemcached 1.2.4でないとサーバー側が停止してしまったこと。これは俺の環境の問題なのか、サーバーの問題なのかは不明。

この機能は次のバージョン0.00005でリリースします。