如何在 Javascript 中为循环的不同部分计时

How to time different parts of a loop in Javascript

不是 How to measure time taken by a function to execute 的副本。在将其标记为其他问题的副本之前,请实际阅读我的问题。不管怎样,已经回答了。


我有这样的代码

for (var i = 0 ; i < 10000 ; i++) {

    doSomething();

    doSomethingElse();

}

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

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);

}

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

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);