Я хочу обработать большой файл по строкам с помощью Node.js. Он имеет размер 100 МБ с 500 000 строк. Я нашел это решение для чтения строк в файле вводаСкопируйте строку за строкой из одного большого файла в другой?
Теперь речь идет о написании каждой строки в новый файл вывода, поэтому я стараюсь
function readLines(input, func)
{
var remaining = "";
input.on("data", function(data)
{
remaining += data;
var index = remaining.indexOf("\n");
var last = 0;
while (index > -1)
{
var line = remaining.substring(last, index);
last = index + 1;
func(line);
index = remaining.indexOf("\n", last);
}
remaining = remaining.substring(last);
});
input.on("end", function()
{
if (remaining.length > 0)
{
func(remaining);
}
});
}
function write(data)
{
var written = output.write(data);
}
var fs = require("fs");
var input = fs.createReadStream("input.txt");
var output = fs.createWriteStream("output.txt", {flags: "w"});
readLines(input, write);
Однако сценарий очень медленно, он принимает более 1 часа, чтобы полностью обрабатывать входной файл и дорого стоит процессор и оперативная память (объем процессора равен 25, а объем использования памяти - до 200 МБ). Так может кто-нибудь сказать мне, есть ли способ его оптимизировать?
Вы проверили некоторые другие ответы здесь? Например http://stackoverflow.com/questions/9486683/writing-large-files-with-node-js?rq=1 – mplungjan