pythonのmemcacheモジュール接続速度テスト


3つの違い:
python-libmemcached:libmemcachedインタフェースのパッケージであり、pypi上では現在もdev版であり、豆弁は以前にこの修正に使用されていた.
pylibmc:libmemcachedインタフェースのパッケージでもあります.
python-memcache:純python実装です(メモリ漏洩があるそうです).
また、memcachedを巡るインタフェースは前の2つではありません(get_stats関数の実装が異なります)
テスト環境:
ubuntu  14 64
4 * Intel(R) Core(TM) i5-3470 CPU @ 3.20GH
8G RAM
クライアントは単一の接続を使用します.
テストスクリプト:
# -*- coding: utf-8 -*-

import time

test_vaule = '~!@#$%^&*(' * 10
num = 10000


def test_mem(mc):
    t1 = time.clock()
    for i in xrange(num):
        mc.set(str(i), test_vaule)

    t2 = time.clock()
    for i in xrange(num):
        mc.get(str(i))

    t3 = time.clock()

    print('%d set/s.' % (num / (t2 - t1)))
    print('%d get/s.' % (num / (t3 - t2)))


if __name__ == '__main__':

        import pylibmc
        mc = pylibmc.client.Client(['127.0.0.1:11211'])
        print('test for %s %s' % (pylibmc.__name__, pylibmc.__version__))
        test_mem(mc) 
		
        import memcache
        print('test for %s %s' % (memcache.__name__, memcache.__version__))
        mc = memcache.Client(['127.0.0.1:11211'])
        test_mem(mc)

        import cmemcached
        print('test for %s %s' % (cmemcached.__name__, cmemcached.VERSION))
        mc = cmemcached.Client(['127.0.0.1:11211'])
        test_mem(mc)

テスト結果:
root@ubuntu:~/workspace# python test_mem.py 
test for pylibmc 1.4.1
45783 set/s.
51379 get/s.
test for memcache 1.53
26295 set/s.
25974 get/s.
test for cmemcached 0.40
40135 set/s.
44864 get/s.

結果:
pylibmcはpython-libmemcachedに近く、python-memcacheより1倍ほど速い.
速度pylibmc>python-libmemcached>python-memcache.
メモ:set値がpython dictの場合、python-libmemcached>pylibmc