File: BENCHMARKS

Here are some benchmarks for various architectures and operating systems.

You can easily run your own benchmarks, as long as you have memcached itself on your system:

  $ ruby -e 'system("ruby #{File.dirname(`gem which memcached`.split("\n").
    last)}/../test/profile/benchmark.rb")'

x86-64 OS X

These benchmarks were run on an OS X 10.5 Core 2 Duo machine:

  Darwin amber.local 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15 16:55:01 PDT
  2009; root:xnu-1228.15.4~1/RELEASE_I386 i386
  Ruby 1.9.2p0
  Loaded memcached 0.20.1
  Loaded remix-stash 1.1.3
  Loaded memcache-client 1.8.5
  Loaded dalli 0.9.2
  Loops is 20000
  Stack depth is 0
  Small value size is: 19 bytes
  Large value size is: 4189 bytes
  No matching processes belonging to you were found
                                            user     system      total        real
  set: dalli:bin                        4.820000   1.510000   6.330000 (  7.225315)
  set: libm:ascii                       0.570000   0.980000   1.550000 (  4.003960)
  set: libm:ascii:pipelined             0.170000   0.020000   0.190000 (  0.203469)
  set: libm:ascii:udp                   0.450000   0.570000   1.020000 (  2.077743)
  set: libm:bin                         0.480000   0.990000   1.470000 (  3.692485)
  set: libm:bin:buffered                0.140000   0.120000   0.260000 (  0.870617)
  set: mclient:ascii                    7.300000   3.290000  10.590000 ( 11.325935)
  set: stash:bin                        2.600000   1.170000   3.770000 (  6.621495)

  get: dalli:bin                        5.540000   1.660000   7.200000 (  7.762690)
  get: libm:ascii                       0.680000   1.040000   1.720000 (  3.918273)
  get: libm:ascii:pipelined             0.780000   1.270000   2.050000 (  4.130800)
  get: libm:ascii:udp                   0.580000   0.570000   1.150000 (  2.097873)
  get: libm:bin                         0.560000   1.000000   1.560000 (  3.504147)
  get: libm:bin:buffered                0.670000   1.330000   2.000000 (  4.134638)
  get: mclient:ascii                    8.820000   3.440000  12.260000 ( 12.775693)
  get: stash:bin                        2.390000   1.310000   3.700000 (  5.927902)

  get-multi: dalli:bin                  6.910000   2.790000   9.700000 ( 10.351834)
  get-multi: libm:ascii                 0.780000   0.640000   1.420000 (  2.400928)
  get-multi: libm:ascii:pipelined       0.780000   0.650000   1.430000 (  2.398865)
  get-multi: libm:ascii:udp             0.730000   0.480000   1.210000 (  1.667487)
  get-multi: libm:bin                   0.790000   0.940000   1.730000 (  3.077329)
  get-multi: libm:bin:buffered          0.800000   0.980000   1.780000 (  3.120033)

  append: dalli:bin                     5.340000   1.820000   7.160000 (  9.463384)
  append: libm:ascii                    0.610000   1.060000   1.670000 (  6.177618)
  append: libm:ascii:pipelined          0.190000   0.040000   0.230000 ( 10.719099)
  append: libm:ascii:udp                0.500000   0.590000   1.090000 (  4.877804)
  append: libm:bin                      0.530000   1.030000   1.560000 ( 12.678462)
  append: libm:bin:buffered             0.800000   1.480000   2.280000 ( 20.612821)
  append: mclient:ascii                 7.680000   3.500000  11.180000 ( 17.252513)

  prepend: dalli:bin                    7.020000   1.990000   9.010000 ( 13.790809)
  prepend: libm:ascii                   0.860000   1.160000   2.020000 ( 22.172399)
  prepend: libm:ascii:pipelined         0.180000   0.020000   0.200000 (  0.228367)
  prepend: libm:ascii:udp               0.540000   0.630000   1.170000 ( 14.770980)
  prepend: libm:bin                     1.150000   1.050000   2.200000 (  5.341857)
  prepend: libm:bin:buffered            1.250000   1.390000   2.640000 (  5.621586)
  prepend: mclient:ascii                7.650000   3.420000  11.070000 ( 11.717946)

  delete: dalli:bin                     5.320000   1.760000   7.080000 (  7.442455)
  delete: libm:ascii                    1.150000   1.050000   2.200000 (  4.588383)
  delete: libm:ascii:pipelined          0.290000   0.370000   0.660000 (  0.773548)
  delete: libm:ascii:udp                1.060000   0.660000   1.720000 (  3.389179)
  delete: libm:bin                      1.080000   1.040000   2.120000 (  4.461896)
  delete: libm:bin:buffered             0.230000   0.350000   0.580000 (  1.114071)
  delete: mclient:ascii                 7.640000   3.380000  11.020000 ( 11.271308)

  get-missing: dalli:bin                5.410000   1.760000   7.170000 (  7.756717)
  get-missing: libm:ascii               1.190000   1.000000   2.190000 (  4.992572)
  get-missing: libm:ascii:pipelined     1.290000   1.410000   2.700000 (  4.775207)
  get-missing: libm:ascii:udp           1.090000   0.660000   1.750000 (  3.354907)
  get-missing: libm:bin                 1.170000   1.060000   2.230000 (  4.550311)
  get-missing: libm:bin:buffered        1.270000   1.390000   2.660000 (  4.834454)
  get-missing: mclient:ascii            7.570000   3.390000  10.960000 ( 11.470425)
  get-missing: stash:bin                2.350000   1.340000   3.690000 (  6.073585)

  append-missing: dalli:bin             7.740000   1.980000   9.720000 ( 10.168658)
  append-missing: libm:ascii            1.240000   1.070000   2.310000 (  5.397586)
  append-missing: libm:ascii:pipelined  0.190000   0.020000   0.210000 (  0.227031)
  append-missing: libm:ascii:udp        1.130000   0.680000   1.810000 (  3.926319)
  append-missing: libm:bin              1.140000   1.060000   2.200000 (  4.798300)
  append-missing: libm:bin:buffered     1.250000   1.410000   2.660000 (  5.091978)
  append-missing: mclient:ascii         7.830000   3.440000  11.270000 ( 11.654683)

  prepend-missing: dalli:bin            7.750000   1.990000   9.740000 ( 10.179379)
  prepend-missing: libm:ascii           1.240000   1.070000   2.310000 (  5.418788)
  prepend-missing: libm:ascii:pipelined  0.180000   0.010000   0.190000 (  0.201024)
  prepend-missing: libm:ascii:udp       1.120000   0.680000   1.800000 (  3.931292)
  prepend-missing: libm:bin             1.150000   1.070000   2.220000 (  4.820438)
  prepend-missing: libm:bin:buffered    1.240000   1.410000   2.650000 (  5.083105)
  prepend-missing: mclient:ascii        7.850000   3.450000  11.300000 ( 11.663710)

  set-large: dalli:bin                  5.470000   1.700000   7.170000 (  7.819158)
  set-large: libm:ascii                 0.620000   1.120000   1.740000 (  4.489379)
  set-large: libm:ascii:pipelined       0.330000   0.290000   0.620000 (  1.235649)
  set-large: libm:ascii:udp             0.500000   0.650000   1.150000 (  3.026405)
  set-large: libm:bin                   0.510000   1.060000   1.570000 (  4.105516)
  set-large: libm:bin:buffered          0.300000   0.460000   0.760000 (  1.590685)
  set-large: mclient:ascii              8.170000   3.580000  11.750000 ( 12.304508)
  set-large: stash:bin                  3.820000   1.190000   5.010000 (  7.826406)

  get-large: dalli:bin                  6.070000   1.980000   8.050000 (  8.625461)
  get-large: libm:ascii                 0.920000   1.090000   2.010000 (  4.725218)
  get-large: libm:ascii:pipelined       1.010000   1.470000   2.480000 (  5.123318)
  get-large: libm:ascii:udp             0.840000   0.740000   1.580000 (  2.479091)
  get-large: libm:bin                   0.810000   1.200000   2.010000 (  4.404212)
  get-large: libm:bin:buffered          0.890000   1.430000   2.320000 (  4.991805)
  get-large: mclient:ascii             10.270000   4.040000  14.310000 ( 14.881824)
  get-large: stash:bin                  2.480000   1.350000   3.830000 (  6.041167)

  hash:default                          0.330000   0.000000   0.330000 (  0.338913)
  hash:md5                              0.740000   0.000000   0.740000 (  0.749003)
  hash:crc                              0.430000   0.010000   0.440000 (  0.428859)
  hash:fnv1_64                          0.800000   0.000000   0.800000 (  0.814617)
  hash:fnv1a_64                         0.290000   0.000000   0.290000 (  0.289964)
  hash:fnv1_32                          0.270000   0.000000   0.270000 (  0.273325)
  hash:fnv1a_32                         0.280000   0.010000   0.290000 (  0.307831)
  hash:hsieh                            0.130000   0.000000   0.130000 (  0.128252)
  hash:murmur                           0.210000   0.000000   0.210000 (  0.212935)
  hash:jenkins                          0.250000   0.000000   0.250000 (  0.257421)
  hash:none                             0.130000   0.000000   0.130000 (  0.124726)