计算功能运行时间

时间:2014-03-25 16:22:25

标签: javascript time

我想在JavaScript中计算函数的平均运行时间,如下所示:

time = 0;

while(1000) {
  time1 = performance.now();
  function();
  time2 = performance.now();
  time += (time2-time1);
}

问题是只有第一个循环的时间间隔约为60ms,而后续循环的间隔几乎为零。 所以我将代码更改为:

time1 = performance.now();

while(1000000) {     
    function();
}

time2 = performance.now();
time = (time2-time1);

运行时间约为4 seconds

我想也许是因为自动优化。

如果是这种情况,是否有任何方法可以关闭优化?

2 个答案:

答案 0 :(得分:0)

您最有可能导致浏览器将该代码移交给其JIT编译器。第一次运行总是通过解释器(慢)。热代码通过JIT,然后使用生成的本机(快速)代码。

这是自动的,通常无法控制。您可以在脚本中使用“with”来禁用Firefox JIT编译器。

with({}) {}

将其添加到脚本的顶部,并且将禁用脚本的JIT。

答案 1 :(得分:0)

您还可以使用console.timeconsole.endTime函数计算运行时间。

示例:

 console.time('profile 1');
   for ( var i=0; i < 100000; i++) {
    var arr = new Array();
   }
  console.timeEnd('profile 1');//profile 1: 108.492ms 

  console.time('profile 2');
   for ( var i=0; i < 100000; i++) {
    var arr = [];
   }
  console.timeEnd('profile 2');//profile 2: 81.907ms