[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