Some nice results from OS X x86:
user system total set:ruby:noblock:memcached 0.100000 0.010000 0.110000 set:ruby:memcached 0.150000 0.140000 0.290000 set:ruby:memcache-client 18.070000 0.310000 18.380000 get:ruby:memcached 0.180000 0.140000 0.320000 get:ruby:memcache-client 18.210000 0.320000 18.530000 missing:ruby:memcached 0.290000 0.170000 0.460000 missing:ruby:memcache-client 18.110000 0.330000 18.440000 mixed:ruby:noblock:memcached 0.380000 0.340000 0.720000 mixed:ruby:memcached 0.370000 0.280000 0.650000 mixed:ruby:memcache-client 36.760000 0.700000 37.460000
Ubuntu/Xen AMD64 was similar to the above, while RHEL AMD64 was more like 20x. It’s weird how much better Ruby performance was on RHEL.
I’ll try to push a little more Ruby into C, because we’re already down to counting single dispatches. For any deep object, most of the time is spent in
Built-in non-blocking IO, consistent key modulus, cross-language hash functions, append/prepend/replace operators, thread safety, and other fancy stuff. CAS (compare and swap) coming as soon as libmemcached finishes it.
The API is not compatible with Ruby-MemCache/memcache-client, but it’s pretty close. Don’t drop it into Rails just yet.