最近在網(wǎng)上看到篇Blog其中講到箕慧,Ruby怎么在大數(shù)組中快速找到的第一匹配的元素。
同時(shí)對一個超大數(shù)組進(jìn)行測試茴恰,分別用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
方法一般用于一個經(jīng)過排序后的數(shù)組颠焦。