web-dev-qa-db-fra.com

Comment obtenir la sortie de console.timeEnd () dans la console JS?

J'aimerais pouvoir récupérer la chaîne de console.timeEnd('t') dans ma console Google Chrome Javascript).

Dans cet exemple ci-dessous, je voudrais une variable qui contiendrait "t: 0.276ms"

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

Est-ce quelque chose de faisable?

40
François Beaufort

Dans Google Chrome 23.0.1262.2 (Official Build 155904) dev, il semble que ce soit impossible. Le seul moyen que j'ai trouvé pour pouvoir calculer le temps avec précision est d'utiliser window.performance.webkitNow()

Voici un exemple simple:

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

En savoir plus sur http://updates.html5rocks.com/2012/08/When-milliseconds-are-not-enough-performance-now

34
François Beaufort

vous pouvez simplement utiliser

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

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

c'est le moyen le plus simple et cela fonctionnera sur n'importe quel navigateur non seulement en chrome

11
nikoss

Petite aide pour mesurer le temps. timerEnd renvoie le temps en ms, également l'objet timers contient des informations sur le nombre de fois où le temporisateur portant ce nom a été utilisé, la somme de tous les temps mesurés et la moyenne des mesures. Je trouve cela très utile, car le temps mesuré pour une opération dépend de nombreux facteurs, il est donc préférable de le mesurer plusieurs fois et de regarder la moyenne.

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;
}
6
Felix