关于优化:如何在Javascript中计算循环的不同部分

How to time different parts of a loop in Javascript

本问题已经有最佳答案,请猛点这里访问。

与如何测量函数执行所花费的时间不重复。 请在将其标记为其他内容的副本之前,先阅读我的问题。 无论如何,它已被回答。

我的代码就像

1
2
3
4
5
6
7
for (var i = 0 ; i < 10000 ; i++) {

    doSomething();

    doSomethingElse();

}

我想知道循环中的每个函数整体花费了多少时间。 我该如何衡量?


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var t1;
var t2;
var f1Time =0;
var f2Time =0;
for (var i = 0 ; i < 10000 ; i++) {
    t1 = performance.now();
    doSomething();
    t2  = performance.now();
    f1Time+= (t2 - t1);

    t1 = performance.now();
    doSomethingElse();
    t2  = performance.now();
    f1Time+=(t2 - t1);

}


创建一个测试对象并注册各个时差:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function doSomething() {
  t = Date.now();
  while (Date.now() < t + 13) {}
}

function doSomethingElse() {
  t = Date.now();
  while (Date.now() < t + 27) {}
}
var tests = {
 "doSomething": [],
 "doSomethingElse": []
};
for (var i_1 = 0; i_1 < 10; i_1++) {
  var t = Date.now();
  doSomething();
  tests.doSomething.push(Date.now() - t);
  t = Date.now();
  doSomethingElse();
  tests.doSomethingElse.push(Date.now() - t);
}
for (var key in tests) {
  if (tests.hasOwnProperty(key)) {
    tests[key] = tests[key]
      .reduce(function(sum, value) {
        return sum + value;
      }, 0);
  }
}
console.log(tests);