Rubyの下でMemcachedの2つのクライアントの対比


コード:
require "rubygems"
require 'eventmachine'
require "benchmark"
require "memcache"

cache_proc = proc{|cache,n|
  proc{
    n.times do |t|
      cache.set "a", 'hello'
      cache.set "b", 'hi'
      cache.set "c", 'how are you?'
      cache.set "d", ''

      # => EM client's get() must require a block,nnd.
      cache.get("a"){}
      cache.get("missing"){}
      cache.set("missing", 'abc')
      cache.get("missing"){}
      cache.delete("missing")
      cache.get("missing"){}
    end
    }
  }

# => memcache-client v1.7.0
cache_client = MemCache.new('localhost:10001')

# => Eventmachine Memcache Protocol
EM.run{
    cache_em = EM::P::Memcache.connect 'localhost', 10001
    Benchmark.bmbm do |x|
      x.report('EM',&cache_proc.call(cache_em,10000))
      x.report('memcache-client',&cache_proc.call(cache_client,10000))
    end
  }

テスト結果:
参照
Rehearsal ---------------------------------------------------
EM                4.350000   0.140000   4.490000 (  4.532573)
memcache-client  34.970000   5.760000  40.730000 ( 42.958925)
----------------------------------------- total: 45.220000sec
                      user     system      total        real
EM               12.030000   0.180000  12.210000 ( 12.330900)
memcache-client  57.510000   6.220000  63.730000 ( 65.870205)
EventmachineはMemcache-clientよりずっと速いですね.この反射モデルに基づく中間部品は潜在力をよく発掘することができます.