我有一個簡單的文本文件,大約150MB。我的代碼將讀取每一行,如果它匹配某些正則表達式,它將被寫入輸出文件。 但是現在,它只是需要很長的時間通過所有的文件做線(幾分鐘)的迭代像用Ruby解析大文件的最快方法
File.open(filename).each do |line|
# do some stuff
end
我知道它的通過是該文件的行循環需要一段時間,因爲即使我對「#某些東西」中的數據什麼都不做,仍然需要很長時間。
我知道一些unix程序可以像這樣幾乎立即解析大文件(如grep),所以我想知道爲什麼ruby(MRI 1.9)花費這麼長時間來讀取文件,並且有一些方法可以使它更快?
你有沒有考慮過使用'sed'? – 2011-05-10 20:29:37
@奧斯汀我想在純紅寶石中做到這一點 – 2011-05-10 20:47:53
我不能重現這一點。通過150MB文件迭代在這裏需要一秒鐘。肯定比grep慢,但不是你描述的程度。該文件可能有很長的路線?在這種情況下,通過大塊而不是線條閱讀可能會有所幫助(如果完全可以用你想做的事情來做)。 – sepp2k 2011-05-10 20:52:04