[Moscow.pm] perl-овый клиент для memcached-а на XS
Монашёв Михаил
postmaster на softsearch.ru
Пн Ноя 26 06:39:12 PST 2007
Здравствуйте.
Спешу поделиться бенчмарками нового XS-клиента для мемкашеда, который
мы сейчас разрабатываем:
>benchmark1.pl
Rate Cache::Memcached set() Cache::Memcached set() noreply Cache::Memcached::Fast set() Cache::Memcached::Fast set() noreply
Cache::Memcached set() 3774/s -- -56% -61% -64%
Cache::Memcached set() noreply 8522/s 126% -- -11% -18%
Cache::Memcached::Fast set() 9588/s 154% 13% -- -8%
Cache::Memcached::Fast set() noreply 10440/s 177% 23% 9% --
Rate Cache::Memcached get() Cache::Memcached::Fast get()
Cache::Memcached get() 1578/s -- -86%
Cache::Memcached::Fast get() 11199/s 610% --
Rate Cache::Memcached
delete() Cache::Memcached delete() noreply Cache::Memcached::Fast delete() Cache::Memcached::Fast delete() noreply
Cache::Memcached delete() 4206/s -- -59% -68% -72%
Cache::Memcached delete() noreply 10348/s 146% -- -20% -32%
Cache::Memcached::Fast delete() 13008/s 209% 26% -- -15%
Cache::Memcached::Fast delete() noreply 15256/s 263% 47% 17% --
noreply для Cache::Memcached::Fast ещё не готов. Так что возможно
будет ещё быстрее. :-)
Патчи для перлового клиента и сервера для включения noreply есть в
листе http://lists.danga.com/mailman/listinfo/memcached .
Тестилось всё это на офисном сервере. По сети пока не тестилось.
Тестилось вот так:
#!/usr/bin/perl
use strict;
use warnings;
use Benchmark qw(cmpthese);
use Cache::Memcached::Fast;
use Cache::Memcached;
my $memd = new Cache::Memcached {
'servers' => ['127.0.0.1:11211'],
'namespace' => 'Cache::Memcached::Blah'
};
$memd->enable_compress(0);
my $memd_fast = new Cache::Memcached::Fast {
'servers' => ['127.0.0.1:11211'],
'namespace' => 'Cache::Memcached::Fast'
};
my $value = 'lisrutfhigu hiwr ighwiergis ebwsbrfgus e';
my $max_keys = 1000;
#заполняем мемкашед данными для каждого namespace-а
for (my $i=$max_keys; $i>0 ; $i--) {
$memd->set($i, $value);
$memd_fast->set($i, $value);
}
my $val;
cmpthese(10000, # число итераций
{
'Cache::Memcached set()' => sub { $val=$memd->set(int(rand($max_keys)), $value); },
'Cache::Memcached set() noreply' => sub { $memd->set(int(rand($max_keys)), $value); },
'Cache::Memcached::Fast set()' => sub { $val=$memd_fast->set(int(rand($max_keys)), $value); },
'Cache::Memcached::Fast set() noreply' => sub { $memd_fast->set(int(rand($max_keys)), $value); }
}
);
cmpthese(10000,
{
'Cache::Memcached get()' => sub { my $val=$memd->get(int(rand($max_keys))); },
'Cache::Memcached::Fast get()' => sub { my $val=$memd_fast->get(int(rand($max_keys))); }
}
);
cmpthese(10000,
{
'Cache::Memcached delete()' => sub { $val=$memd->delete(int(rand($max_keys))); },
'Cache::Memcached delete() noreply' => sub { $memd->delete(int(rand($max_keys))); },
'Cache::Memcached::Fast delete()' => sub { $val=$memd_fast->delete(int(rand($max_keys))); },
'Cache::Memcached::Fast delete() noreply' => sub { $memd_fast->delete(int(rand($max_keys))); }
}
);
--
С уважением,
Монашёв Михаил, SoftSearch.ru
mailto:postmaster на softsearch.ru
ICQ# 166233339
http://softsearch.ru/
Без бэкапа по жизни.
Подробная информация о списке рассылки Moscow-pm