Node.jsを使用して大きなファイルを1行ずつ処理したいと思います。サイズは100MB、行数は500,000です。入力ファイルの行を読み取るためのこのソリューションを見つけました
javascript --node.js:テキストファイルを配列に読み込みます。(各行は配列内のアイテムです。)-スタックオーバーフロー
これで、各行を新しい出力ファイルに書き込むことができるので、試してみます
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時間以上かかり、CPUとRAMの使用量が多くなります(CPUの量は25、メモリの使用量は最大200MBです)。それで、それを最適化する方法があるかどうか誰かに教えてもらえますか?