On 9/1/07, Martin Sagastume <[EMAIL PROTECTED]> wrote:
> Masomenos ya esta terminado...solo un pequeño problema jajaj demora mas de
> 15 minutos en scannear mi carpeta personal /home/martin y encima se re
> funde el micro..no puedo hacer mas nada!!! Siempre me canso y mato el
> proceso ruby antes de dejarlo terminar...mi notebook es un celeron M de
> 1.43ghz con 1GB DDR ...estaría bueno que alguien lo pruebe, es demasiado
> ineficiente esto jeje
>
Martin, aunque en mi maquina (Windows) no se produce esto (por alguna
razon el GC es mas eficiente) te hago unas sugerencias.
Ya que podes encontrarte con archivos gigantezcos, te recomiendo no
hagas File.read(), sino busques una alternativa streamlined.
(leer chuncks y usar #update de la clase MD5).
Segun ruby-prof:
0.37 0.11 0.11 0.00 0.00 65730 <Class::File>#extname
0.05 0.02 0.02 0.00 0.00 74947 String#==
65730 llamadas a extname! eso si que es expensive (y otras tantas a
#== de String).
En lugar de construir la lista de extensiones validas, podrias:
class Dupes
@@extensiones = %w{ .iso .img .mp3 .wav .wma .ogg .jpg .gif .png
.jpeg .bmp .avi .mpg .wmv .cue .bin .rar .tar .jar .zip .7z .gz .bz2
.cpkg .deb .rpm .pdf .spx .xcf .odt .rtf .odg .odp .ods .exe .msi .doc
.pps .ppt .xls .nrg .tmp .dat .bak .sfv .m3u }
y luego reemplazar todo el metodo esExtensionPermitida? por esto:
def esExtensionPermitida?(dir)
@@extensiones.include?(File.extname(dir))
end
Voy a correr unos benchs cuando tenga un tiempito y tiro otras sugerencias.
--
Luis Lavena
Multimedia systems
-
Leaders are made, they are not born. They are made by hard effort,
which is the price which all of us must pay to achieve any goal that
is worthwhile.
Vince Lombardi
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar