0

我可以很容易地做到这一点:

console.time('mytimer');
doSomeWork();
console.timeEnd('mytimer');

但是是否可以在多个函数中计算时间。我需要在全局变量中定义脚本的开始时间。然后在多个函数中,我将写出自时间开始以来经过了多少毫秒。并写下函数的名称是这样的:

console.time('mytimer');
doSomeWork() {
  // console.log(difference between now and "mytimer"s start time)
  // console.log(name of the function: doSomeWork())
};
doSomeWork2() {
  // console.log(difference between now and "mytimer"s start time)
  // console.log(name of the function: doSomeWork2())
};
doSomeWork3() {
  // console.log(difference between now and "mytimer"s start time)
  // console.log(name of the function: doSomeWork3())
};
console.timeEnd('mytimer');

我将在 Chrome 26+ 中使用它来解决调试问题,因此使用与浏览器相关的函数(例如:arguments.callee.name)不是问题。

编辑:解决我的问题。
这有效:

console.time('myTimer1');
console.timeEnd('myTimer1');

这不起作用:

console.time('myTimer2');
console.time('myTimer2');

编辑:当然可以编写太多计时器并检查每个计时器的时间。但我需要知道自从每圈开始 javascript 代码以来经过的时间。

4

2 回答 2

1

如果您需要特定功能的时间,我想您知道它们可以通过 console.time() 和 console.timeEnd() 的参数来实现。更多关于它的信息在这里https://developers.google.com/chrome-developer-tools/docs/console/

根据我对您问题的理解,您需要进行基准分析。

我已经定义了以下方法,您可以使用这些方法以毫秒为单位获取单圈时间。


更新:使用性能API,这是针对此类用例的推荐 API。

console.lapStart = function(name){
     window[name] = window[name] || {};
     window[name].globalTimer = performance.now();
}
console.showLap = function(name){
     currTime = performance.now();
     var diff = currTime  - window[name].globalTimer;
     console.log(arguments.callee.name, diff);
}
console.lapEnd = function(name){
     currTime = performance.now();
     var diff = currTime  - window[name].globalTimer;
     console.log(arguments.callee.name, diff);
     delete window[name]
}

请注意,这是粗略的代码,只能在 dev 中运行。否则,它可能会在全局对象中留下不好的痕迹,并在您的嘴上留下不好的味道。

于 2013-05-26T16:27:10.457 回答
0

有一个解决方案是生活标准。似乎它已经在 chrome 和主要浏览器和 nodejs 上

https://developer.mozilla.org/en-US/docs/Web/API/Console/timeLog

console.time("answer time");
alert("Click to continue");
console.timeLog("answer time");
alert("Do a bunch of other stuff...");
console.timeEnd("answer time");
The
于 2019-06-20T19:38:08.687 回答