Tengo un archivo de texto simple que es ~ 150mb. Mi código leerá cada línea, y si coincide con ciertas expresiones regulares, se escribe en un archivo de salida. Pero en este momento, sólo se necesita mucho tiempo para recorrer todas las líneas del archivo (varios minutos) haciendo comoLa forma más rápida de analizar un archivo grande en Ruby
File.open(filename).each do |line|
# do some stuff
end
Sé que es el bucle a través de las líneas del archivo que se encuentra Tomando un tiempo porque incluso si no hago nada con los datos en "#hacer algunas cosas", todavía lleva mucho tiempo.
Sé que algunos programas Unix pueden analizar archivos grandes como este casi al instante (como grep), entonces me pregunto por qué Ruby (MRI 1.9) tarda tanto en leer el archivo, y hay alguna manera de hacerlo más rápido ?
¿Ha considerado usar 'sed'? –
@Austin Me gustaría hacer esto en ruby puro –
No puedo reproducir esto. Iterar a través de un archivo de 150 MB requiere menos de un segundo aquí. Ciertamente más lento que grep, pero no en la medida en que lo describes. ¿El archivo puede tener líneas muy largas? En ese caso, leer por partes en lugar de líneas podría ayudar (si eso es posible en absoluto con lo que estás tratando de hacer). – sepp2k