This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.

Benchmarking Competing Solutions
CodeExpectedActual
RANGE = (0..1000)
array = RANGE.to_a
hash = RANGE.inject({}) { |h,i| h[i] = true; h }
def test_member?(data)
  RANGE.each { |i| data.member? i }
end
require 'benchmark'
Benchmark.bm(5) do |timer|
  timer.report('Array') { test_member?(array) }
  timer.report('Hash') { test_member?(hash) }
end
user     system      total        real
Array  0.260000   0.060000   0.320000 (  0.332583)
Hash   0.010000   0.000000   0.010000 (  0.001242)
user     system      total        real
Array  0.280000   0.050000   0.330000 (  0.318784)
Hash   0.000000   0.000000   0.000000 (  0.001216)
Benchmark.bm(5) do |timer|
  timer.report('Array') { 1000.times { RANGE.each { |i| array[i] } } }
  timer.report('Hash') { 1000.times { RANGE.each { |i| hash[i] } } }
end
user     system      total        real
Array  0.950000   0.210000   1.160000 (  1.175042)
Hash   1.010000   0.210000   1.220000 (  1.221090)
user     system      total        real
Array  1.000000   0.180000   1.180000 (  1.220659)
Hash   1.060000   0.170000   1.230000 (  1.252879)
def write_to_file
  File.open('out', 'w') { |f| f.write('a') }
end
puts Benchmark.measure { 10000.times { write_to_file } }
0.120000   0.360000   0.480000 (  0.500653)
0.130000   0.360000   0.490000 (  0.499884)