Cache::Memcached::XSはちょっと速い


Cache-Memcached-XS-0.01 - client library for memcached (memory cache daemon) using libmemcache - metacpan.org


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」とかいわれることがある。

ちょっと調べてみようかなぁ。