La forma más rápida en ventanas para carpetas muy grandes sería utilizar el command line version of search everything así, no sé si Linus tiene algo así como Buscar todo ... Si lo hace, por favor, háganoslo saber.
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
ver aquí los resultados de una carpeta relativamente pequeño (+800 archivos)
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)
su agradable código de una sola línea, gracias hombre –
no problemo! :) –
¿Puedes explicar por qué el primer método debe ser más rápido que el segundo? O tal vez entendí mal lo que querías decir con "la manera más rápida". – Automatico