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:

  Ruby 1.8.7p174
  Loaded memcached 0.17
  Loaded binary42-remix-stash 0.9.5
  Loaded memcache-client 1.7.5
  Loops is 40000
  Stack depth is 0
  Small value size is: 13 bytes
  Large value size is: 4158 bytes

                                            user     system      total        real
  set:libm                              1.360000   2.120000   3.480000 (  8.952505)
  set:libm:binary                       1.180000   2.100000   3.280000 (  7.692065)
  set:libm:noblock                      0.590000   0.240000   0.830000 (  1.863921)
  set:libm:noblock_binary               0.470000   0.220000   0.690000 (  1.678243)
  set:libm:udp                          1.140000   1.150000   2.290000 (  4.835305)
  set:ruby                             15.440000   6.330000  21.770000 ( 22.136843)
  set:stash                             5.780000   2.040000   7.820000 ( 13.748268)
  get:libm                              1.600000   2.000000   3.600000 (  8.112166)
  get:libm:binary                       1.360000   2.150000   3.510000 (  7.829266)
  get:libm:noblock                      1.820000   2.630000   4.450000 (  8.971191)
  get:libm:noblock_binary               1.560000   2.650000   4.210000 (  8.114088)
  get:libm:udp                          1.350000   1.140000   2.490000 (  4.878485)
  get:ruby                             18.640000   6.370000  25.010000 ( 25.925459)
  get:stash                             5.120000   1.990000   7.110000 ( 11.850485)
  get-multi:libm                        1.770000   1.320000   3.090000 (  4.790793)
  get-multi:libm:binary                 1.730000   1.740000   3.470000 (  5.655120)
  get-multi:libm:noblock                1.820000   1.330000   3.150000 (  4.841084)
  get-multi:libm:noblock_binary         1.740000   1.760000   3.500000 (  5.616970)
  get-multi:libm:udp                    1.690000   0.960000   2.650000 (  3.551923)
  get-multi:ruby                       21.380000   4.400000  25.780000 ( 26.017883)
  append:libm                           1.500000   2.180000   3.680000 ( 14.658051)
  append:libm:binary                    1.300000   2.110000   3.410000 ( 13.626305)
  append:libm:noblock                   1.850000   2.870000   4.720000 ( 45.167145)
  append:libm:noblock_binary            1.640000   2.870000   4.510000 ( 44.614596)
  append:libm:udp                       1.260000   1.170000   2.430000 ( 11.556293)
  append:ruby                          16.770000   7.310000  24.080000 ( 29.525815)
  delete:libm                           1.890000   2.080000   3.970000 (  8.368548)
  delete:libm:binary                    1.730000   2.090000   3.820000 (  7.799952)
  delete:libm:noblock                   0.850000   0.890000   1.740000 (  2.530108)
  delete:libm:noblock_binary            0.710000   0.780000   1.490000 (  2.390600)
  delete:libm:udp                       1.700000   1.310000   3.010000 (  6.508360)
  delete:ruby                          15.670000   6.330000  22.000000 ( 22.226087)
  delete:stash                          4.970000   2.010000   6.980000 ( 11.726916)
  get-missing:libm                      2.070000   2.060000   4.130000 (  8.937420)
  get-missing:libm:binary               2.010000   2.090000   4.100000 (  8.506150)
  get-missing:libm:noblock              2.270000   2.770000   5.040000 (  9.485592)
  get-missing:libm:noblock_binary       2.220000   2.760000   4.980000 (  9.226826)
  get-missing:libm:udp                  1.830000   1.300000   3.130000 (  7.135699)
  get-missing:ruby                     16.130000   6.380000  22.510000 ( 22.888698)
  get-missing:stash                     5.030000   2.030000   7.060000 ( 11.556793)
  append-missing:libm                   2.210000   2.070000   4.280000 ( 10.386632)
  append-missing:libm:binary            2.000000   2.060000   4.060000 (  9.135312)
  append-missing:libm:noblock           2.400000   2.740000   5.140000 ( 10.821778)
  append-missing:libm:noblock_binary    2.200000   2.770000   4.970000 (  9.699192)
  append-missing:libm:udp               1.970000   1.320000   3.290000 (  7.668878)
  append-missing:ruby                  15.970000   6.470000  22.440000 ( 22.912466)
  set-large:libm                        1.460000   2.210000   3.670000 (  9.517034)
  set-large:libm:binary                 1.260000   2.270000   3.530000 (  9.098769)
  set-large:libm:noblock                0.980000   0.890000   1.870000 (  3.304075)
  set-large:libm:noblock_binary         0.840000   0.890000   1.730000 (  3.444305)
  set-large:libm:udp                    1.250000   1.330000   2.580000 (  6.924254)
  set-large:ruby                       16.960000   6.490000  23.450000 ( 23.964380)
  get-large:libm                        2.280000   2.450000   4.730000 (  9.908532)
  get-large:libm:binary                 2.080000   2.530000   4.610000 (  8.966637)
  get-large:libm:noblock                2.410000   2.850000   5.260000 ( 11.066391)
  get-large:libm:noblock_binary         2.200000   2.910000   5.110000 ( 10.328922)
  get-large:libm:udp                    2.010000   1.430000   3.440000 (  6.679192)
  get-large:ruby                       21.790000   7.370000  29.160000 ( 29.578987)
  get-large:stash                       5.430000   2.020000   7.450000 ( 11.967011)
  set-ruby:libm                         1.800000   1.990000   3.790000 (  9.511387)
  set-ruby:libm:binary                  1.610000   2.000000   3.610000 (  8.502297)
  set-ruby:libm:noblock                 0.910000   0.200000   1.110000 (  2.083001)
  set-ruby:libm:noblock_binary          0.750000   0.210000   0.960000 (  1.895510)
  set-ruby:libm:udp                     1.530000   1.170000   2.700000 (  6.148442)
  set-ruby:ruby                        16.290000   6.400000  22.690000 ( 23.672254)
  set-ruby:stash                        5.570000   2.020000   7.590000 ( 13.381661)
  get-ruby:libm                         1.920000   1.950000   3.870000 (  9.042716)
  get-ruby:libm:binary                  1.640000   1.980000   3.620000 (  7.987886)
  get-ruby:libm:noblock                 2.140000   2.600000   4.740000 ( 10.280036)
  get-ruby:libm:noblock_binary          1.870000   2.590000   4.460000 (  9.213013)
  get-ruby:libm:udp                     1.660000   1.170000   2.830000 (  5.762381)
  get-ruby:ruby                        19.760000   6.500000  26.260000 ( 27.573109)
  get-ruby:stash                        5.480000   2.010000   7.490000 ( 12.349059)
  set-ruby-large:libm                  33.820000   2.340000  36.160000 ( 43.061537)
  set-ruby-large:libm:binary           33.430000   2.260000  35.690000 ( 41.940845)
  set-ruby-large:libm:noblock          34.170000   0.930000  35.100000 ( 35.632694)
  set-ruby-large:libm:noblock_binary   34.010000   0.930000  34.940000 ( 35.383141)
  set-ruby-large:libm:udp              33.150000   1.430000  34.580000 ( 39.521448)
  set-ruby-large:ruby                  48.830000   6.560000  55.390000 ( 55.750071)
  set-ruby-large:stash                 38.660000   2.230000  40.890000 ( 46.957838)
  get-ruby-large:libm                  23.570000   2.340000  25.910000 ( 32.166590)
  get-ruby-large:libm:binary           23.420000   2.510000  25.930000 ( 31.953854)
  get-ruby-large:libm:noblock          23.840000   3.040000  26.880000 ( 32.919639)
  get-ruby-large:libm:noblock_binary   23.570000   2.970000  26.540000 ( 32.210027)
  get-ruby-large:libm:udp              23.210000   1.460000  24.670000 ( 29.284808)
  get-ruby-large:ruby                  41.170000   7.560000  48.730000 ( 49.507358)
  get-ruby-large:stash                 25.760000   2.540000  28.300000 ( 33.998493)
  hash:fnv1a_64                         0.240000   0.000000   0.240000 (  0.247813)
  hash:murmur                           0.190000   0.000000   0.190000 (  0.193039)
  hash:default                          0.220000   0.000000   0.220000 (  0.216573)
  hash:jenkins                          0.220000   0.000000   0.220000 (  0.222694)
  hash:md5                              0.390000   0.000000   0.390000 (  0.395159)
  hash:crc                              0.210000   0.000000   0.210000 (  0.216457)
  hash:hsieh                            0.100000   0.000000   0.100000 (  0.104386)
  hash:fnv1_32                          0.220000   0.000000   0.220000 (  0.216769)
  hash:fnv1a_32                         0.230000   0.000000   0.230000 (  0.237016)
  hash:fnv1_64                          0.450000   0.010000   0.460000 (  0.454704)