53

我希望能够从console.timeEnd('t')我的 Google Chrome Javascript 控制台中获取返回的字符串。

在下面的这个例子中,我想要一个包含"t: 0.276ms"

> console.time('t'); console.timeEnd('t');
  t: 0.276ms
< undefined

这是可行的吗?

4

4 回答 4

50

在 Google Chrome 23.0.1262.2 (Official Build 155904) dev 中,这似乎是不可能的。我发现能够准确计算时间的唯一方法是使用window.performance.webkitNow()

这是一个简单的例子:

var start = window.performance.now();
...
var end = window.performance.now();
var time = end - start;

在http://updates.html5rocks.com/2012/08/When-milliseconds-are-not-enough-performance-now了解更多信息

于 2012-09-20T00:57:03.947 回答
23

只是你可以使用

var begin=Date.now();
something here ...;
var end= Date.now();

var timeSpent=(end-begin)/1000+"secs";

这是最简单的方法,它适用于任何浏览器,而不仅仅是 chrome

于 2015-06-20T01:55:18.483 回答
8

小帮手做一些时间测量。timerEnd返回以毫秒为单位的时间,该timers对象还包含有关使用此名称的计时器的次数、所有测量时间的总和和测量平均值的信息。我觉得这很有用,因为一个操作的测量时间取决于许多因素,所以最好测量几次并查看平均值。

var timers = {};
function timer(name) {
    timers[name + '_start'] = window.performance.now();
}

function timerEnd(name) {
    if (!timers[name + '_start']) return undefined;
    var time = window.performance.now() - timers[name + '_start'];
    var amount = timers[name + '_amount'] = timers[name + '_amount'] ? timers[name + '_amount'] + 1 : 1;
    var sum = timers[name + '_sum'] = timers[name + '_sum'] ? timers[name + '_sum'] + time : time;
    timers[name + '_avg'] = sum / amount;
    delete timers[name + '_start'];
    return time;
}
于 2014-11-07T19:24:16.253 回答
-4

console.timeEnd() 函数将时间放到控制台,并返回值以便您可以将其保存到变量

var c = console.timeEnd('a');
c/1000+'s';

或者您可以将此变量保存到窗口对象以供最新使用

window.c = console.timeEnd('b');
window.c
于 2012-09-19T11:19:49.740 回答