特定のバージョンのノードでは、a += b
は、a = a + b
よりも大幅に低速ですが、ブラウザおよびそれ以降のバージョンでは同様です。何が彼らを違うように動かすのか?ノードで+ =(加算代入、等価)が遅いのはなぜですか?
node v6.10.0 (V8 5.1.281.93)
、75%遅い、または逆86%遅く、node v8.0.0 (V8 5.8.283.41)
4倍速くなり、または逆86%遅い、又は逆、node v8.2.1 (V8 5.8.283.41)
7倍速くなり、高速node v8.3.0 (V8 6.0.286.52)
を7倍されます、node v8.9.2 (V8 6.1.534.48)
類似し、
node v8.7.0 (v8 6.1.534.42)
類似する類似
safari 11.0.1
同様のchrome 62.0.3202.94 (V8 6.1.534.42)
、同様の
編集:これは問題ではありません
const iter = 10 * 1000 * 1000
function one() {
let i = 0
let sum = 0
while (i < iter) {
sum += i
i++
}
}
function two() {
let i = 0
let sum = 0
while (i < iter) {
sum = sum + i
i++
}
}
let time
const tries = 10
time = Date.now()
for (let i = 0; i < tries; i++) {
one()
}
console.log('one: ' + String(Date.now() - time))
time = Date.now()
for (let i = 0; i < tries; i++) {
two()
}
console.log('two: ' + String(Date.now() - time))
テストの順序を「two」と「one」に切り替えましたか? _Homemade_テストは必ずしも信頼できるものではありません。 –
何が変わるのですか? @ibrahimmahrir – Luca
私は "ちょうど"のために、同じ結果を得るために同じような結果を得ることを試みました – Billiam