更快的Finder

最近在网上看到篇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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容