У меня есть простой текстовый файл размером ~ 150 МБ. Мой код будет читать каждую строку и, если он соответствует определенным регулярным выражениям, записывается в выходной файл. Но прямо сейчас перебор всех строк файла занимает много времени (несколько минут), делая это как
File.open(filename).each do |line|
# do some stuff
end
. Я знаю, что это перебор строк файла занимает некоторое время, потому что даже если я ничего не сделаю с данными в "# сделать что-нибудь", это все равно займет много времени.
Я знаю, что некоторые программы Unix могут анализировать такие большие файлы почти мгновенно (например, grep), поэтому мне интересно, почему Ruby (MRI 1.9) так долго читает файл и есть ли способ сделать это быстрее?