2
我的性能测试火狐,Chrome和Safari在下面的JavaScript代码段更快为什么火狐执行JavaScript居然比其他浏览器
var f = function(x) {
\t return Math.sin(x);
}
function testSpeed() {
\t console.log("test started, please hold on...");
\t var time = Date.now();
\t for(var i = 0; i < 1000; i ++) {
\t \t for(var x = 1; x < 200000; x ++) {
\t \t \t f(x);//replace by Math.sin(x) here
\t \t }
\t }
\t console.log("total time = " + ((Date.now() - time)/1000.0));
}
testSpeed();
的结果是:
Math.sin(x)
替换f(x)
时,也是如此。Math.sin(x)
替换f(x)
时。 Safari浏览器下f(x)
呼叫通过Math.sin(x)
。这使得Firefox比Chrome快50倍,比Safari快70倍,是否有任何已知的原因?
同样在Safari下,为什么直接拨打Math.sin(x)
与f(x)
呼叫相比会产生巨大差异(快13倍)?
有趣。甚至边缘比铬更快。得分:0.287 –
完全删除'f(x)'调用或删除'f'的主体时,速度如何?由于它没有效果,引擎可以合理地消除它。 – Ryan
@Ryan没有f(x)Firefox保持0.12s的执行时间,Chrome令人惊讶地降低到0.18s,Safari降到0.54s,由于某些原因,函数调用在Chrome和Safari下显着影响性能 – ALTN