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