ベンチマーク

srand 1.0 * 2008/10/29 * 3*14 * 0xdeadbeaf # 乱数の種を設定
lookup = Array.new(100000){ rand }.sort!
data = Array.new(2000) { rand }

Benchmark.bm do |x|
 x.report { data.each do |v| match_liner v, lookup end }
 x.report { data.each do |v| match_recursive v, lookup end }
 x.report { data.each do |v| match_loop v, lookup end }
end
   user   system   total    real
221.528000  0.040000 221.568000 (237.392000) # 線形検索
 0.501000  0.000000  0.501000 ( 0.550000) # 二分検索(再帰)
 0.140000  0.000000  0.140000 ( 0.141000) # 二分検索(ループ)