Я уже узнал, что readline можно использовать для чтения файла по строкам, например.
readline
.createInterface({input: fs.createReadStream('xxx')})
.on('line', (line) => { apply_regexp_on_line })
.on('close', () => { report_all_regexps });
Однако это довольно медленно, поскольку я сравнивал производительность grep
и JavaScript regexp, а последний имеет лучшую производительность в тестируемых регулярных выражениях. (см. benchmark). Поэтому я считаю, что я должен обвинять асинхронную readline node.
В моей ситуации мне вообще неинтересно, я просто должен использовать быстрое регулярное выражение JavaScript для обработки очень больших файлов журналов (обычно 1-2 ГБ, иногда до 10 ГБ). Каков наилучший способ сделать это? Меня беспокоит только скорость.
Бонусные баллы: некоторые из файлов журнала gzipped, поэтому мне нужно их распаковать. Если кто-то может порекомендовать мне быстрый линейный считыватель для обычного текста и gzipped-текста, я был бы очень благодарен.