如何从JS Console中的console.timeEnd()获取输出?

Fra*_*ort 43 javascript google-chrome google-chrome-devtools

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

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

> console.time('t'); console.timeEnd('t');
  t: 0.276ms
< undefined
Run Code Online (Sandbox Code Playgroud)

这是可行的吗?

Fra*_*ort 37

在Google Chrome 23.0.1262.2(官方版本155904)开发中,看起来这是不可能的.我发现能够准确计算时间的唯一方法就是使用window.performance.webkitNow()

这是一个简单的例子:

var start = window.performance.now();
...
var end = window.performance.now();
var time = end - start;
Run Code Online (Sandbox Code Playgroud)

更多信息,请访问http://updates.html5rocks.com/2012/08/When-milliseconds-are-not-enough-performance-now

  • 在Chrome 36.0.1985.125中只是`window.performance.now()` (10认同)
  • 如果 `console.timeEnd()` 只返回经过的时间就好了 (4认同)

nik*_*oss 13

只是你可以使用

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

var timeSpent=(end-begin)/1000+"secs";
Run Code Online (Sandbox Code Playgroud)

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

  • 请参阅本文以了解 window.performance.now() 可能是更好选择的原因:https://developers.google.com/web/updates/2012/08/When-milliseconds-are-not-enough-performance-now API 现在也得到了很好的支持:https://caniuse.com/#search=performance.now (3认同)

Fel*_*lix 7

做一些时间测量的小帮手.timerEnd返回以ms为单位的时间,该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;
}
Run Code Online (Sandbox Code Playgroud)