Если скорость имеет значение, предпочитайте Dir.glob
, а не Find.find
.
Warming up --------------------------------------
Find.find 124.000 i/100ms
Dir.glob 515.000 i/100ms
Calculating -------------------------------------
Find.find 1.242k (± 4.7%) i/s - 6.200k in 5.001398s
Dir.glob 5.249k (± 4.5%) i/s - 26.265k in 5.014632s
Comparison:
Dir.glob: 5248.5 i/s
Find.find: 1242.4 i/s - 4.22x slower
require 'find'
require 'benchmark/ips'
dir = '.'
Benchmark.ips do |x|
x.report 'Find.find' do
Find.find(dir).select { |f| f =~ /\*\.pdf/ }
end
x.report 'Dir.glob' do
Dir.glob("#{dir}/**/*\.pdf")
end
x.compare!
end
Использование ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin15]