2015-06-05 15 views
7

Was ist der beste Weg, um die Ausführungszeit von Funktionen in JavaScript zu messen? Vorzugsweise ähnlich wie Python-Zeit.Wie funktioniert das zeit in JavaScript, ähnlich wie Python timeit

+0

Nicht wirklich, es gibt [console.time] (https://developer.mozilla.org/en-US/docs/Web/API/Console/time) oder [JSPerf] (http://jsperf.com/), aber nicht das, wonach Sie suchen – adeneo

+0

Wie wäre es mit ['Performance'] (https://developer.mozilla.org/en-US/docs/Web/ API/Leistung)? – Xufox

Antwort

10

Es gibt kein eingebautes Modul, das äquivalent zu timeit.py ist, aber Sie können die Ausführung des Codes einfach selbst zeitgesteuert durchführen. Sie sollten performance.now() anstelle von Date.now() verwenden, da dies genauer ist.

Aus den MDN Doc:

Die performance.now() Methode liefert eine DOMHighResTimeStamp, gemessen in Millisekunden , genau fünf Tausendstel von einer Millisekunde (5 Mikrosekunden )

var start = performance.now(); 

//do your things 

var end = performance.now(); 
var duration = end - start; 

Sie können dann verwenden, um Ihre eigene Timing-Bibliothek wie folgt zu erstellen:

function TimeIt() { 
    var self = this; 

    function howLong(iterations, testFunction) { 
     var results = []; 
     var total = 0; 
     for (var i = 0; i < iterations; i++) { 
      var start = performance.now(); 
      testFunction(); 
      var end = performance.now(); 
      var duration = end - start; 
      results.push(duration); 
      total += duration; 
     } 
     var result = { 
       results : results, 
       total : total, 
       avg : total/results.length 
     } 
     return result; 
    } 
    self.howLong = howLong; 
} 

Welche würden Sie wie folgt verwenden:

var timeit = new TimeIt(); 

var foo = function() { 
//do some things 
}; 

var result = timeit.howLong(1000, foo); 
console.log("avg: " + result.avg); 
console.log("total: " + result.total); 
1

Ich habe keine wirklich deap Suche darüber gemacht, aber soweit ich gesucht habe, habe ich nichts gefunden. Am einfachsten ist es, Zeit zu bekommen, wenn die Funktion startet, Zeit zu erhalten, wenn sie endet, und sie voneinander zu subtrahieren (nachdem sie Date.parse verwendet haben, um sie in Millisekunden zu konvertieren). Es ist sicherlich eine naive, aber eine funktionierende Lösung.

Verwandte Themen