2015-06-05 10 views
7

JavaScript'teki işlevlerin yürütme süresini ölçmenin en iyi yolu nedir? Tercihen Python zamanına benzer.Python zaman çizelgesine benzer şekilde JavaScript'deki zaman işlevleri nasıl kullanılır?

+0

Pek değil, orada [console.time] (https://developer.mozilla.org/en-US/docs/Web/API/Console/time) veya [JSPerf] (http://jsperf.com/), ama aradığınızı değil – adeneo

+0

['Performance'] hakkında (https://developer.mozilla.org/en-US/docs/Web/) API/Performans)? – Xufox

cevap

10

Timeit.py'ye eşdeğer bir yerleşik modül yoktur, ancak kodun yürütülmesini kolayca kendiniz gerçekleştirebilirsiniz. Daha doğru olduğu için Date.now() yerine performance.now() kullanmalısınız.

performance.now() yöntemi, bir milisaniye beş binde doğru milisaniye ölçülen DOMHighResTimeStamp, döner (5 mikro)

var start = performance.now(); 

//do your things 

var end = performance.now(); 
var duration = end - start; 
: MDN Dokümanlar

Bunu kendi zamanlama kitaplığınızı oluşturmak için bunu kullanabilirsiniz:

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

böyle kullanırsınız hangisi:

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

Bu konuda gerçekten bir arama yapmadım, ama aradığım kadarıyla hiçbir şey bulamadım. Yapılması gereken en basit şey, fonksiyon başladığı zaman elde etmek, zaman bittiğinde zaman ayırmak ve diğerinden çıkartmaktır (Date.parse'ı milisaniye olarak dönüştürdükten sonra). Kesinlikle bir naif çözüm ama çalışan bir tanesi.

İlgili konular