Сегодня в скайп-конфе попросили написать простой парсер удаляющий из большого файла все строки содержащие определённое ключевое слово. Быстро набросал достаточно грубый скрипт на Node.JS, который разбивал все 550мб на массив по переносу строки и проверял каждый элемент в цикле и изумился — файл в 530мб и ~1.7млн строк нода умудрилась преобразовать всего за 3 секунды.
Вот его код:
fs = require('fs')
fs.readFile 'data.txt', 'utf8', (err, data) ->
file = data.split '\n'
out = ''
for string in file
if string.search('/partner/') is -1
out += string + '\n'
fs.appendFile 'node_out.txt', out, (err) -> console.error err
Время исполнения — 2,9 секунды.
Стало интересно, как с такой задачкой справятся другие языки и я попросил друга написать такой же парсер на Perl, а затем подтянулись спецы по другим языкам появились и варианты на Python, Bash и Java. Примеры кода и время исполнения следуют дальше: Дальше →