私はnode.jsの初心者です。node.jsスプライスが70000を超えるアイテムに対して遅すぎる
var Stopwatch = require("node-stopwatch").Stopwatch;
var stopwatch = Stopwatch.create();
var a = []
stopwatch.start();
for (var i = 1 ; i < 70000 ; i++){
a.push((parseInt(Math.random() * 10000)) + "test");
}
for (var i = 1 ; i < 70000 ; i++){
a.splice(0,1);
}
stopwatch.stop();
console.log("End: " + stopwatch.elapsedMilliseconds + " : " + a.length);
それが正常に動作し、出力は次のとおりです:
PS C:\Users\Documents\VSCode> node test.js
End: 51 : 0
しかし、ときに私は
iは配列に70000の項目を挿入し、それらのすべてを削除しようとしましたアイテムの数を72000に増やすと、終了するのに時間がかかりすぎる:var Stopwatch = require("node-stopwatch").Stopwatch;
var stopwatch = Stopwatch.create();
var a = []
stopwatch.start();
for (var i = 1 ; i < 72000 ; i++){
a.push((parseInt(Math.random() * 10000)) + "test");
}
for (var i = 1 ; i < 72000 ; i++){
a.splice(0,1);
}
stopwatch.stop();
console.log("End: " + stopwatch.elapsedMilliseconds + " : " + a.length);
されて出力される。
End: 9554 : 0
それが起こるのはなぜ? 2000アイテムしか追加しませんでしたが、時間がかかりすぎます。
Node.jsのバージョンは次のとおりです。v6.11.3
時間の爆発が配列の集団または破壊、またはその両方で起こるかどうか知っていますか?破壊における – apsillers
@apsillers 'a.splice(0,1)。 「 –
はちょうどこの遊ん/調査して - 私のために上限が71109である - この後に、それは本当に遅いです。例えば71110は、12476msかかる! 71109 is 64ms – Alex