我尝试了下一个代码(它在Google Chrome和nodejs中显示了类似的结果):
var t = new Array(200000); console.time('wtf'); for (var i = 0; i < 200000; ++i) {t.push(Math.random());} console.timeEnd('wtf');
wtf: 27839.499ms
undefined
Run Code Online (Sandbox Code Playgroud)
我也跑了下一个测试:
var t = []; console.time('wtf'); for (var i = 0; i < 400000; ++i) {t.push(Math.random());} console.timeEnd('wtf');
wtf: 449.948ms
undefined
var t = []; console.time('wtf'); for (var i = 0; i < 400000; ++i) {t.push(undefined);} console.timeEnd('wtf');
wtf: 406.710ms
undefined
Run Code Online (Sandbox Code Playgroud)
但在Firefox中,第一个变体看起来都很好:
>>> var t = new Array(200000); console.time('wtf'); ...{t.push(Math.random());} console.timeEnd('wtf');
wtf: 602ms
Run Code Online (Sandbox Code Playgroud)
V8会发生什么?
UPD *神奇地降低了性能*
var t …Run Code Online (Sandbox Code Playgroud)