[英]Fast method to write in a TXT file?
我制作了兩個腳本來制作文件並寫入其中。 問題是兩者都很慢(基於磁盤速度)是否有更好的方法來寫入文件?
let codes = [];
function makeid(length) {
var result = '';
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var charactersLength = characters.length;
for ( var i = 0; i < length; i++ ) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
};
for (let i = 0; 1000000 > i; i++)
{
codes.push(`${makeid(20)}`);
}
fs.writeFile(`./codes/${makeid(5)}.txt`, codes.join('\n'), (err) => {
if (err)
{
message.reply("There was an error processing your request");
throw err;
}
})
/* Second script */
let stream = fs.createWriteStream(`./codes/${makeid(5)}.txt`);
for (let i = 0; 1000000 > i; i++)
{
stream.write(`${makeid(20)}`);
}
stream.end();
兩個代碼都需要 5-15 秒。 我正在尋找一種更快的方法來使其在 < 5 秒內完成。 該文件保存在 txt 中。 謝謝
您可以創建Buffer
,而不是創建然后加入的字符串數組。 這更快,因為 Node.js 不進行任何轉換,而只是將緩沖區中的字節寫入磁盤。
// improved first method
const codes = Buffer.allocUnsafe(1000000 * 20);
for (let i = 0; 1000000 > i; i++) {
codes.write(`${makeid(20)}`, i * 20, 20);
}
fs.writeFileSync(`./${makeid(5)}.txt`, codes);
在我的機器上,這需要 970.012 毫秒,而不是之前的 1907.401 毫秒,減少了50% 。
如果可以的話,我認為你應該在你的文本中寫一次數據。 所以你不是在每次迭代時都這樣做,而是在循環之后。 這樣你就可以減少 function 調用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.