V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
mckelvin
V2EX  ›  分享创造

libmc: 高效轻便的 C++/Python Memcached 客户端库

  •  2
     
  •   mckelvin ·
    mckelvin · 2015-04-07 10:30:23 +08:00 · 3403 次点击
    这是一个创建于 3629 天前的主题,其中的信息可能已经有所发展或是发生改变。
    https://github.com/douban/libmc

    Benchmark 可见:
    INFO:libmc.bench:pylibmc: /home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/pylibmc/__init__.pyc
    INFO:libmc.bench:libmc: /home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/libmc-0.5.0-py2.7-linux-x86_64.egg/libmc/__init__.pyc
    INFO:libmc.bench:cmemcached: /home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages/cmemcached.pyc
    INFO:libmc.bench:5 participants in 16 benchmarks
    INFO:libmc.bench:
    INFO:libmc.bench:Multi set 10 keys with value size 100
    INFO:libmc.bench: pylibmc (md5 / ketama): 0.0003s, σ=0.0017, n=3371, snr=1:5.69
    INFO:libmc.bench: pylibmc (md5 / ketama / nodelay / nonblocking): 0.000297s, σ=0.0017, n=3372, snr=1:5.72
    INFO:libmc.bench: python-memcached: 0.000549s, σ=0.00228, n=1749, snr=1:4.15
    INFO:libmc.bench: libmc(md5 / ketama / nodelay / nonblocking, from douban): 0.000162s, σ=0.00126, n=5795, snr=1:7.79
    INFO:libmc.bench: python-libmemcached(md5 / ketama / nodelay / nonblocking, from douban): 0.000332s, σ=0.00179, n=3011, snr=1:5.4
    INFO:libmc.bench:
    INFO:libmc.bench:Multi get 10 keys with value size 100
    INFO:libmc.bench: pylibmc (md5 / ketama): 0.000181s, σ=0.00133, n=5198, snr=1:7.37
    INFO:libmc.bench: pylibmc (md5 / ketama / nodelay / nonblocking): 0.000123s, σ=0.0011, n=7307, snr=1:8.95
    INFO:libmc.bench: python-memcached: 0.000567s, σ=0.00231, n=1676, snr=1:4.08
    INFO:libmc.bench: libmc(md5 / ketama / nodelay / nonblocking, from douban): 0.000154s, σ=0.00123, n=6296, snr=1:7.99
    INFO:libmc.bench: python-libmemcached(md5 / ketama / nodelay / nonblocking, from douban): 0.000204s, σ=0.00141, n=4600, snr=1:6.92
    INFO:libmc.bench:
    INFO:libmc.bench:Multi set 100 keys with value size 100
    INFO:libmc.bench: pylibmc (md5 / ketama): 0.00275s, σ=0.00459, n=364, snr=1:1.67
    INFO:libmc.bench: pylibmc (md5 / ketama / nodelay / nonblocking): 0.00282s, σ=0.00462, n=355, snr=1:1.64
    INFO:libmc.bench: python-memcached: 0.00316s, σ=0.00485, n=307, snr=1:1.54
    INFO:libmc.bench: libmc(md5 / ketama / nodelay / nonblocking, from douban): 0.000801s, σ=0.00271, n=1248, snr=1:3.39
    INFO:libmc.bench: python-libmemcached(md5 / ketama / nodelay / nonblocking, from douban): 0.00303s, σ=0.00479, n=330, snr=1:1.58
    INFO:libmc.bench:
    INFO:libmc.bench:Multi get 100 keys with value size 100
    INFO:libmc.bench: pylibmc (md5 / ketama): 0.000645s, σ=0.00246, n=1504, snr=1:3.81
    INFO:libmc.bench: pylibmc (md5 / ketama / nodelay / nonblocking): 0.000661s, σ=0.00248, n=1498, snr=1:3.76
    INFO:libmc.bench: python-memcached: 0.00315s, σ=0.00485, n=314, snr=1:1.54
    INFO:libmc.bench: libmc(md5 / ketama / nodelay / nonblocking, from douban): 0.000616s, σ=0.0024, n=1607, snr=1:3.9
    INFO:libmc.bench: python-libmemcached(md5 / ketama / nodelay / nonblocking, from douban): 0.000907s, σ=0.00287, n=1080, snr=1:3.17
    INFO:libmc.bench:
    INFO:libmc.bench:Multi set 10 keys with value size 1000
    INFO:libmc.bench: pylibmc (md5 / ketama): 0.000306s, σ=0.00172, n=3265, snr=1:5.63
    INFO:libmc.bench: pylibmc (md5 / ketama / nodelay / nonblocking): 0.00028s, σ=0.00165, n=3568, snr=1:5.89
    INFO:libmc.bench: python-memcached: 0.000582s, σ=0.00237, n=1666, snr=1:4.07
    INFO:libmc.bench: libmc(md5 / ketama / nodelay / nonblocking, from douban): 0.000182s, σ=0.00134, n=5214, snr=1:7.34
    INFO:libmc.bench: python-libmemcached(md5 / ketama / nodelay / nonblocking, from douban): 0.000342s, σ=0.00182, n=2923, snr=1:5.31
    INFO:libmc.bench:
    INFO:libmc.bench:Multi get 10 keys with value size 1000
    INFO:libmc.bench: pylibmc (md5 / ketama): 0.000197s, σ=0.00139, n=4876, snr=1:7.06
    INFO:libmc.bench: pylibmc (md5 / ketama / nodelay / nonblocking): 0.000167s, σ=0.0013, n=5158, snr=1:7.77
    INFO:libmc.bench: python-memcached: 0.0006s, σ=0.00238, n=1633, snr=1:3.96
    INFO:libmc.bench: libmc(md5 / ketama / nodelay / nonblocking, from douban): 0.000159s, σ=0.00125, n=5929, snr=1:7.88
    INFO:libmc.bench: python-libmemcached(md5 / ketama / nodelay / nonblocking, from douban): 0.000222s, σ=0.00147, n=4271, snr=1:6.63
    INFO:libmc.bench:
    INFO:libmc.bench:Small set
    INFO:libmc.bench: pylibmc (md5 / ketama): 4.88e-05s, σ=0.000697, n=20510, snr=1:14.3
    INFO:libmc.bench: pylibmc (md5 / ketama / nodelay / nonblocking): 4.77e-05s, σ=0.000689, n=20756, snr=1:14.4
    INFO:libmc.bench: python-memcached: 8.29e-05s, σ=0.000907, n=11941, snr=1:10.9
    INFO:libmc.bench: libmc(md5 / ketama / nodelay / nonblocking, from douban): 5.02e-05s, σ=0.000707, n=19906, snr=1:14.1
    INFO:libmc.bench: python-libmemcached(md5 / ketama / nodelay / nonblocking, from douban): 5.51e-05s, σ=0.00074, n=18139, snr=1:13.4
    INFO:libmc.bench:
    INFO:libmc.bench:Small get
    INFO:libmc.bench: pylibmc (md5 / ketama): 4.56e-05s, σ=0.000674, n=21917, snr=1:14.8
    INFO:libmc.bench: pylibmc (md5 / ketama / nodelay / nonblocking): 4.94e-05s, σ=0.000701, n=20039, snr=1:14.2
    INFO:libmc.bench: python-memcached: 8.81e-05s, σ=0.000934, n=11243, snr=1:10.6
    INFO:libmc.bench: libmc(md5 / ketama / nodelay / nonblocking, from douban): 4.48e-05s, σ=0.000668, n=21863, snr=1:14.9
    INFO:libmc.bench: python-libmemcached(md5 / ketama / nodelay / nonblocking, from douban): 5e-05s, σ=0.000705, n=20010, snr=1:14.1
    INFO:libmc.bench:
    INFO:libmc.bench:4k uncompressed set
    INFO:libmc.bench: pylibmc (md5 / ketama): 4.91e-05s, σ=0.000699, n=20173, snr=1:14.2
    INFO:libmc.bench: pylibmc (md5 / ketama / nodelay / nonblocking): 5.11e-05s, σ=0.000713, n=19570, snr=1:14
    INFO:libmc.bench: python-memcached: 9e-05s, σ=0.000945, n=11108, snr=1:10.5
    INFO:libmc.bench: libmc(md5 / ketama / nodelay / nonblocking, from douban): 5.21e-05s, σ=0.00072, n=19015, snr=1:13.8
    INFO:libmc.bench: python-libmemcached(md5 / ketama / nodelay / nonblocking, from douban): 6.13e-05s, σ=0.00078, n=16161, snr=1:12.7
    INFO:libmc.bench:
    INFO:libmc.bench:4k uncompressed get
    INFO:libmc.bench: pylibmc (md5 / ketama): 5.59e-05s, σ=0.000746, n=17878, snr=1:13.3
    INFO:libmc.bench: pylibmc (md5 / ketama / nodelay / nonblocking): 5.94e-05s, σ=0.000768, n=16833, snr=1:12.9
    INFO:libmc.bench: python-memcached: 0.000104s, σ=0.00101, n=9606, snr=1:9.75
    INFO:libmc.bench: libmc(md5 / ketama / nodelay / nonblocking, from douban): 6.12e-05s, σ=0.00078, n=16166, snr=1:12.7
    INFO:libmc.bench: python-libmemcached(md5 / ketama / nodelay / nonblocking, from douban): 6.36e-05s, σ=0.000795, n=15712, snr=1:12.5
    INFO:libmc.bench:
    INFO:libmc.bench:4k compressed set
    INFO:libmc.bench: pylibmc (md5 / ketama): 8.57e-05s, σ=0.000922, n=11665, snr=1:10.8
    INFO:libmc.bench: pylibmc (md5 / ketama / nodelay / nonblocking): 8.34e-05s, σ=0.000909, n=11875, snr=1:10.9
    INFO:libmc.bench: python-memcached: 9.34e-05s, σ=0.000962, n=10701, snr=1:10.3
    INFO:libmc.bench: libmc(md5 / ketama / nodelay / nonblocking, from douban): 8.84e-05s, σ=0.000936, n=11307, snr=1:10.6
    INFO:libmc.bench: python-libmemcached(md5 / ketama / nodelay / nonblocking, from douban): 9.11e-05s, σ=0.00095, n=10973, snr=1:10.4
    INFO:libmc.bench:
    INFO:libmc.bench:4k compressed get
    INFO:libmc.bench: pylibmc (md5 / ketama): 5.56e-05s, σ=0.000744, n=17802, snr=1:13.4
    INFO:libmc.bench: pylibmc (md5 / ketama / nodelay / nonblocking): 5.52e-05s, σ=0.000741, n=18116, snr=1:13.4
    INFO:libmc.bench: python-memcached: 0.000104s, σ=0.00101, n=9527, snr=1:9.76
    INFO:libmc.bench: libmc(md5 / ketama / nodelay / nonblocking, from douban): 5.75e-05s, σ=0.000756, n=17382, snr=1:13.1
    INFO:libmc.bench: python-libmemcached(md5 / ketama / nodelay / nonblocking, from douban): 6.26e-05s, σ=0.000789, n=15814, snr=1:12.6
    INFO:libmc.bench:
    INFO:libmc.bench:1M compressed set
    INFO:libmc.bench: pylibmc (md5 / ketama): 0.0084s, σ=0.00366, n=119, snr=2.29:1
    INFO:libmc.bench: pylibmc (md5 / ketama / nodelay / nonblocking): 0.00806s, σ=0.00395, n=124, snr=2.04:1
    INFO:libmc.bench: python-memcached: 0.0082s, σ=0.00384, n=122, snr=2.13:1
    INFO:libmc.bench: libmc(md5 / ketama / nodelay / nonblocking, from douban): 0.00826s, σ=0.004, n=121, snr=2.07:1
    INFO:libmc.bench: python-libmemcached(md5 / ketama / nodelay / nonblocking, from douban): 0.00847s, σ=0.0036, n=118, snr=2.36:1
    INFO:libmc.bench:
    INFO:libmc.bench:1M compressed get
    INFO:libmc.bench: pylibmc (md5 / ketama): 0.00389s, σ=0.00488, n=257, snr=1:1.25
    INFO:libmc.bench: pylibmc (md5 / ketama / nodelay / nonblocking): 0.00351s, σ=0.00477, n=282, snr=1:1.36
    INFO:libmc.bench: python-memcached: 0.0033s, σ=0.0047, n=303, snr=1:1.42
    INFO:libmc.bench: libmc(md5 / ketama / nodelay / nonblocking, from douban): 0.00341s, σ=0.00474, n=293, snr=1:1.39
    INFO:libmc.bench: python-libmemcached(md5 / ketama / nodelay / nonblocking, from douban): 0.00358s, σ=0.0048, n=279, snr=1:1.34
    INFO:libmc.bench:
    INFO:libmc.bench:Complex data set
    INFO:libmc.bench: pylibmc (md5 / ketama): 6.9e-05s, σ=0.000828, n=14341, snr=1:12
    INFO:libmc.bench: pylibmc (md5 / ketama / nodelay / nonblocking): 7.21e-05s, σ=0.000846, n=13877, snr=1:11.7
    INFO:libmc.bench: python-memcached: 0.000183s, σ=0.00134, n=5475, snr=1:7.33
    INFO:libmc.bench: libmc(md5 / ketama / nodelay / nonblocking, from douban): 8.06e-05s, σ=0.000894, n=12410, snr=1:11.1
    INFO:libmc.bench: python-libmemcached(md5 / ketama / nodelay / nonblocking, from douban): 7.81e-05s, σ=0.00088, n=12809, snr=1:11.3
    INFO:libmc.bench:
    INFO:libmc.bench:Complex data get
    INFO:libmc.bench: pylibmc (md5 / ketama): 9.14e-05s, σ=0.000951, n=10507, snr=1:10.4
    INFO:libmc.bench: pylibmc (md5 / ketama / nodelay / nonblocking): 8.11e-05s, σ=0.000897, n=12334, snr=1:11.1
    INFO:libmc.bench: python-memcached: 0.000174s, σ=0.00131, n=5733, snr=1:7.51
    INFO:libmc.bench: libmc(md5 / ketama / nodelay / nonblocking, from douban): 7.91e-05s, σ=0.000886, n=12638, snr=1:11.2
    INFO:libmc.bench: python-libmemcached(md5 / ketama / nodelay / nonblocking, from douban): 8.3e-05s, σ=0.000907, n=12048, snr=1:10.9
    labels = ['pylibmc (md5 / ketama)', 'pylibmc (md5 / ketama / nodelay / nonblocking)', 'python-memcached', 'libmc(md5 / ketama / nodelay / nonblocking, from douban)', 'python-libmemcached(md5 / ketama / nodelay / nonblocking, from douban)']
    benchmarks = ['Multi set 10 keys with value size 100', 'Multi get 10 keys with value size 100', 'Multi set 100 keys with value size 100', 'Multi get 100 keys with value size 100', 'Multi set 10 keys with value size 1000', 'Multi get 10 keys with value size 1000', 'Small set', 'Small get', '4k uncompressed set', '4k uncompressed get', '4k compressed set', '4k compressed get', '1M compressed set', '1M compressed get', 'Complex data set', 'Complex data get']
    means = [[0.00029961435775734195, 0.00018083878414774937, 0.0027472527472527475, 0.0006449468085106411, 0.00030627871362940275, 0.0001968826907301061, 4.8756704046806435e-05, 4.5626682483916596e-05, 4.907549695137074e-05, 5.593466830741694e-05, 8.572653236176597e-05, 5.561172901921104e-05, 0.008403361344537815, 0.0038910505836575876, 6.903284289798543e-05, 9.136765965546989e-05], [0.00029655990510083044, 0.00012316956343232522, 0.0028169014084507044, 0.0006608811748998678, 0.0002802690582959641, 0.0001667312911981373, 4.769705145500106e-05, 4.9403662857428114e-05, 5.109862033725089e-05, 5.940711697261332e-05, 8.336842105263174e-05, 5.5199823360565245e-05, 0.008064516129032258, 0.0035106382978723726, 7.206168480219068e-05, 8.107669855683477e-05], [0.000548885077186964, 0.0005668257756563253, 0.003159609120521175, 0.003152866242038212, 0.0005822328931572623, 0.0006001224739742786, 8.290762917678543e-05, 8.805478964689095e-05, 9.002520705797624e-05, 0.00010410160316468874, 9.344921035417251e-05, 0.00010391518841188223, 0.00819672131147541, 0.0033003300330033004, 0.00018264840182648402, 0.00017442874585731728], [0.00016220880069025051, 0.00015406607369758586, 0.0008012820512820513, 0.0006160547604231477, 0.0001822017644802467, 0.00015854275594535415, 5.023610971566362e-05, 4.482458948909134e-05, 5.2064159873783586e-05, 6.123963874798974e-05, 8.844078889183692e-05, 5.753077896674721e-05, 0.008264462809917356, 0.0034129692832764505, 8.058017727639001e-05, 7.912644405760406e-05], [0.00033211557622052476, 0.00020434782608695602, 0.0030303030303030303, 0.0009074074074074078, 0.00034211426616489907, 0.00022243034418169115, 5.5129830751419594e-05, 4.9975012493753125e-05, 6.125858548357169e-05, 6.364562118126272e-05, 9.113278046113187e-05, 6.260275705071424e-05, 0.00847457627118644, 0.0035842293906810036, 7.807010695604653e-05, 8.300132802124833e-05]]
    stddevs = [[0.0017048093190145661, 0.0013325483764672367, 0.004585196932972538, 0.0024563207647411225, 0.001723072977523461, 0.001389267473667937, 0.0006965556864160754, 0.0006739325119658266, 0.0006988179770961712, 0.0007458002386399377, 0.0009219090439229022, 0.0007436562551255493, 0.003662940288689638, 0.004875472407059008, 0.0008279872556876655, 0.000951487544492257], [0.001696364133579533, 0.001102961872852839, 0.004621778997632389, 0.002484360646456474, 0.0016504968457775264, 0.001295487671651156, 0.0006889814989045137, 0.0007011390066675464, 0.0007130043017907985, 0.0007684672824390015, 0.0009092490950765486, 0.0007409124193226027, 0.003950789907714805, 0.004773028568973356, 0.0008458273828656763, 0.0008967683951386342], [0.0022776250665794465, 0.0023123508160776416, 0.004854622416302638, 0.0048475689686352606, 0.002367146342942477, 0.00237509531513449, 0.000906753889868792, 0.0009342345800114683, 0.0009445356174724082, 0.0010149772844085362, 0.0009621638886519218, 0.001014077668492992, 0.0038446030818224813, 0.0047022464847442215, 0.0013390756437091664, 0.0013091455500408831], [0.0012632404014601235, 0.0012316348411404918, 0.0027149157605925464, 0.0024043760388906582, 0.0013374678171166133, 0.00124911638928923, 0.000706991817800814, 0.000668009469295211, 0.0007196741776626529, 0.0007801577366954367, 0.0009362617773778323, 0.0007563054932624073, 0.003999521862004169, 0.0047414484605630795, 0.0008940406074636653, 0.0008860042022624746], [0.001791885879802841, 0.0014148216236837387, 0.004789412872758877, 0.0028724007156133756, 0.0018177184849517906, 0.0014747298680789162, 0.0007404451426509585, 0.0007051614163180971, 0.0007802776688720394, 0.0007952392386678663, 0.0009502750238413407, 0.0007887385278511294, 0.003595458209423123, 0.004795372100451486, 0.0008801171103667114, 0.0009072618474063649]]
    travis_time:end:10962820:start=1428165897162349927,finish=1428165992077718138,duration=94915368211
    
    2 条回复    2015-04-07 19:38:39 +08:00
    tomliu
        1
    tomliu  
       2015-04-07 13:25:18 +08:00
    Benchmark 屌爆
    zzl0
        2
    zzl0  
       2015-04-07 19:38:39 +08:00
    推荐!mc 的 mc
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4153 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 05:25 · PVG 13:25 · LAX 22:25 · JFK 01:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.