更快的Finder

2018-01-11  本文已影响0人  mixbo

最近在网上看到篇Blog其中讲到,Ruby怎么在大数组中快速找到的第一匹配的元素。
同时对一个超大数组进行测试,分别用findbsearch 来找第一个元素.

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方法一般用于一个经过排序后的数组。

参考: five-ruby-methods-you-should-be-using

上一篇下一篇

猜你喜欢

热点阅读