KTのHTTPとMemcachedプロトコルのベンチを取ってみた

環境は以下の通り

  • mac mini 2.66GHz 4GB RAM
  • kyotocabinet 1.2.30
  • kyototycoon 0.9.18

KTをMemcachd pluginサポート起動

ktserver -plsv  /usr/local/lib/ktplugservmemc.dylib -plex 'port=2010'

ベンチを取ったコードはこんな感じ
とりあえずsetのベンチ

#!/usr/bin/env perl

use strict;
use warnings;

use Benchmark qw(:all);

use Cache::KyotoTycoon;
use Cache::Memcached::Fast;

my $kt = Cache::KyotoTycoon->new( host => '127.0.0.1', port => 1978 );
my $mf = Cache::Memcached::Fast->new( { servers => ['127.0.0.1:2010'] } );

my @keys = map { 'x' . rand } 0 .. 1000;
my $n = 10; 

cmpthese(
    $n => +{
        'Cache::Memcached::Fast' => sub {
            $mf->set( $_ => rand ) for @keys;
        },  
        'Cache::KyotoTycoon' => sub {
            $kt->set( $_ => rand ) for @keys;
        },  
    }   
);

結果

Cache::KyotoTycoon     5.52/s                     --                   -82%
Cache::Memcached::Fast 31.2/s                   466%                     --

HTTPのオーバーヘッドが大きいので当たり前と言えば当たり前ですね。

getやバイナリプロトコルや他のストレージとの比較とかしてみたい。