我正在閱讀一些文件(每個文件約爲2MB)。在nodejs中讀取大量文件
起初我想:
for (var j = 0; j <= limit2; ++j)
fs.readFile(base + i * j + last, {encoding: "utf-8"}, function (err, data) {
cnt++;
if (cnt == limit2)
console.timeEnd("random");
});
這做了很好的工作,但它似乎是閱讀的時間不會永遠liniar:
30 files : ~8s
300 files : ~ 12s
600 files : ~ 22s
1000 files : ~ 120s
因此,我的想法是讀取卡盤的文件。我的意思是:開始閱讀10個文件,等待所有文件完成,然後繼續處理下一個10個文件,等等。
我試着做一些相似的:
function ReadFiles() {
for (var j = 0; j <= limit2; ++j)
fs.readFile(base + i * j + last, {encoding: "utf-8"}, function (err, data) {
cnt++;
if (cnt == limit2)
// console.timeEnd("random");
});
}
for (var i = 0; i <= limit1; ++i) {
GoOn = false;
cnt = 0;
ReadFiles();
}
console.timeEnd("random");
我應該如何讓for循環暫停,直到ReadFile函數做?
還挺內存用完:P – user1640736
@ user1640736我有一個類似的結構超過100,000個文件,而且我沒有耗盡內存。你在運行什麼版本的節點,以及在哪個服務器上運行? –
似乎不是內存問題,也發生在1個文件中:http://paste.isomorphis.me/W0n – user1640736