Cache::Memcached::XSはちょっと速い
libmemcache を使って書かれた Memcachedのインターフェース。
使い方はほぼ Cache::Memcached と同じっぽい。
速度にどのぐらい差が出るかベンチとってみた。
#!/usr/local/bin/perl use strict; use warnings; use Benchmark qw(timethese cmpthese); use Cache::Memcached; use Cache::Memcached::XS; my $bench = timethese(10000, { 'Cache::Memcached' => sub { my $memd = Cache::Memcached->new({ servers => ['127.0.0.1:11211'], }); test($memd); }, 'Cache::Memcached::XS' => sub { my $memd = Cache::Memcached::XS->new({ servers => ['127.0.0.1:11211'], }); test($memd); }, }); cmpthese($bench); sub test { my $memd = shift; my $obj = 'hoge'; $memd->set('hoge', $obj); $memd->get('hoge'); $memd->delete('hoge'); }
結果は
Benchmark: timing 1000 iterations of Cache::Memcached, Cache::Memcached::XS... Cache::Memcached: 2 wallclock secs ( 0.77 usr + 0.26 sys = 1.03 CPU) @ 970.87/s (n=1000) Cache::Memcached::XS: 1 wallclock secs ( 0.19 usr + 0.48 sys = 0.67 CPU) @ 1492.54/s (n=1000) Rate Cache::Memcached Cache::Memcached::XS Cache::Memcached 971/s -- -35% Cache::Memcached::XS 1493/s 54% --
大体1.5倍ぐらい速いことがわかった。
ただ、テストしてたらたまに「Cannot assign requested address」とかいわれることがある。
ちょっと調べてみようかなぁ。