Ставим:  gem install fasterer, запускаем fasterer, можно передать в параметром адрес файла.

выдал  Array#select.first is slower than Array#detect. проводим эксперимент:

require 'benchmark/ips'

data = [*0..100_000_000]
pp data.detect { | doc | doc > 1000 }
pp  data.select { | doc | doc > 1000 }.first


Benchmark.ips do |x|
  x.report('detect')    {
  data.detect { | doc | doc > 1000 }
  }
  x.report('select#select') {
   data.select { | doc | doc > 1000 }.select
  }
  x.compare!
end

 

detect: 19387.9 i/s
select#select: 0.2 i/s - 87530.48x slower В рот мне ноги одним словом

gem 'benchmark-ips' для бренчмарка.

Всегда интересовало оператор безопасной навигации или пресловутый амперсанд перед вызовом метода на объекте сильно тормозит работу? оказываеться нет, вообще не тормозит, пихаем его везде:)

require "benchmark/ips"

HASH =Hash[*("a".."zzz").to_a.shuffle]
KEY = "zz"

def key_fast
  HASH.keys.first.to_s
end

def key_slow
  HASH&.keys&.first&.to_s
end


Benchmark.ips do |x|
  x.report("Hash#&?") { key_slow }
  x.report("Hash#_?") { key_fast }
  x.compare!
end

bsearch вообще никогда не использовал, а оказалось он мега быстрый

require 'benchmark/ips'

data = [*0..100_000_000]

Benchmark.ips do |x|
  x.report('find')    { data.find    { |number| number > 77_777_777 } }
  x.report('bsearch') { data.bsearch { |number| number > 77_777_777 } }
  x.compare!
end