三者區別:python
python-libmemcached:是對libmemcached接口的封裝,pypi上至今仍是dev版,豆瓣之前對此修改使用。ubuntu
pylibmc:也是對libmemcached接口的封裝。memcached
python-memcache:是純python實現(據說有內存泄露)。函數
另外前二者沒有遍歷memcached的接口(get_stats函數實現不同)測試
測試環境:spa
ubuntu 14 64code
4 * Intel(R) Core(TM) i5-3470 CPU @ 3.20GH接口
8G RAM內存
客戶端使用單鏈接。utf-8
測試腳本:
# -*- 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