pythonのmemcacheモジュール接続速度テスト
1821 ワード
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
クライアントは単一の接続を使用します.
テストスクリプト:
テスト結果:
結果:
pylibmcはpython-libmemcachedに近く、python-memcacheより1倍ほど速い.
速度pylibmc>python-libmemcached>python-memcache.
メモ:set値がpython dictの場合、python-libmemcached>pylibmc
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