2015-06-05 17 views
7

Jaki jest najlepszy sposób pomiaru czasu wykonywania funkcji w JavaScript? Najlepiej podobny do timeyta w Pythonie.Jak ustawić czas w JavaScript podobny do czasu w Pythonie

+0

Niezupełnie, istnieje [console.time] (https://developer.mozilla.org/en-US/docs/Web/API/Console/time) lub [JSPerf] (http://jsperf.com/), ale nie to, czego szukasz – adeneo

+0

Co powiesz na "Wydajność" (https://developer.mozilla.org/en-US/docs/Web/ API/wydajność)? – Xufox

Odpowiedz

10

Nie ma wbudowanego modułu równoważnego timeit.py, ale można łatwo czas samodzielnie wykonać kod. Powinieneś użyć funkcji performance.now() zamiast Date.now(), ponieważ jest bardziej dokładna.

Z Dokumenty MDN:

Sposób

performance.now() Zwraca DOMHighResTimeStamp mierzona w milisekundach, z dokładnością do tysięcznych części pięciu milisekund (5 mikrosekund)

var start = performance.now(); 

//do your things 

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

Następnie można użyć tego do zbudowania własnej biblioteki taktowania:

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

Które byłoby użyć tak:

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

Nie udało mi się znaleźć naprawdę ciekawych informacji, ale jak dotąd nie znalazłem nic. Najprostszą rzeczą do zrobienia jest uzyskanie czasu, kiedy funkcja się uruchamia, otrzymanie czasu po jej zakończeniu i odjęcie jednego od drugiego (po użyciu Date.parse do konwersji w milisekundach). Jest to na pewno rozwiązanie naiwne, ale działające.

Powiązane problemy