Я уверен, тестирование производительности ниже Javascript фрагмент кода под Firefox, Chrome и SafariПочему Firefox выполнить 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();
Результаты:
f(x)
звонок по Math.sin(x)
.f(x)
звонок по Math.sin(x)
.f(x)
вызов Math.sin(x)
.Это делает Firefox ~ 50 раз быстрее, чем Chrome и ~ 70 раз быстрее, чем Safari, есть ли какая-то известная причина для этого?
Также под Safari, почему прямой вызов Math.sin(x)
делает огромную разницу (~ 13 раз быстрее) по сравнению с вызовом f(x)
?
интересный. даже край быстрее, чем хром. оценка: 0.287 –
Какова скорость, когда вы полностью удаляете 'f (x)' вызов или удаляете тело 'f'? Поскольку он не имеет никакого эффекта, двигатель может разумно устранить его. – Ryan
@ Ryan without f (x) Firefox сохраняет время выполнения 0.12s, Chrome неожиданно снижается до 0,18 и Safari до 0,54s, по какой-то причине вызовы функций резко влияют на производительность в Chrome и Safari. – ALTN