Самый быстрый способ разобрать большой файл в Ruby

У меня есть простой текстовый файл размером ~ 150 МБ. Мой код будет читать каждую строку и, если он соответствует определенным регулярным выражениям, записывается в выходной файл. Но прямо сейчас перебор всех строк файла занимает много времени (несколько минут), делая это как

File.open(filename).each do |line|
  # do some stuff
end

. Я знаю, что это перебор строк файла занимает некоторое время, потому что даже если я ничего не сделаю с данными в "# сделать что-нибудь", это все равно займет много времени.

Я знаю, что некоторые программы Unix могут анализировать такие большие файлы почти мгновенно (например, grep), поэтому мне интересно, почему Ruby (MRI 1.9) так долго читает файл и есть ли способ сделать это быстрее?

7
задан Davis Dimitriov 10 May 2011 в 20:24
поделиться