Самый быстрый способ в Windows для очень больших папок - использовать версию командной строки для поиска по всему , как это, не знаю, есть ли у Линуса что-то вроде Поиска всего ... Если это так, пожалуйста, дайте нам знать.
ES = 'C:\Users\...\everything\es\es.exe'
def filelist path
command = %Q{"#{ES}" "#{path}\\*"}
list = []
IO.popen(command+" 2>&1") do |pipe|
while lijn = pipe.gets
list << lijn
end
end
list
end
filelist(path).count
смотрите здесь результаты для сравнительно небольшой папки (+800 файлов)
Benchmark.bmbm do |x|
x.report("glob ") { filelist(path).count }
x.report("everything") { Dir.glob("#{folder}/**/*").count }
end
Rehearsal ----------------------------------------------
glob 0.000000 0.032000 0.032000 ( 0.106887)
everything 0.000000 0.000000 0.000000 ( 0.001979)
------------------------------------- total: 0.032000sec
user system total real
glob 0.016000 0.015000 0.031000 ( 0.110030)
everything 0.000000 0.016000 0.016000 ( 0.001881)