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やバイナリプロトコルや他のストレージとの比較とかしてみたい。