更快的Finder
2018-01-11 本文已影响0人
mixbo
最近在网上看到篇Blog其中讲到,Ruby怎么在大数组中快速找到的第一匹配的元素。
同时对一个超大数组进行测试,分别用find
和 bsearch
来找第一个元素.
require 'benchmark'
data = (0..50_000_000)
Benchmark.bm do |x|
x.report(:find) { data.find {|number| number > 40_000_000 } }
x.report(:bsearch) { data.bsearch {|number| number > 40_000_000 } }
end
user system total real
find 3.020000 0.010000 3.030000 (3.028417)
bsearch 0.000000 0.000000 0.000000 (0.000006)
注意:这里的bsearch
方法一般用于一个经过排序后的数组。