Todos os principais navegadores e Node suportam um método de registro muito fácil para medir o tempo de execução de seu Javascript para facilitar a criação de perfil.
Digamos que você tenha um loop de longa duração:
var arr = [] , loopCount = 5000;
for (var i=0 ; i <loopCount; i++){
arr.push(Math.random() * 50000);
}
Para medir o tempo de execução geral, basta agrupar com console.time () e console.timeEnd () :
var title= "Loop on numbers"
console.time(title);
var arr = [] , loopCount = 5000;
for (var i=0 ; i <loopCount; i++){
arr.push(Math.random() * 50000);
}
console.timeEnd(title);
A execução será impressa no console com uma precisão de milissegundos.
Às vezes, você pode querer medir algo ao nível de nanossegundos.
Node.JS fornece uma maneira de fazer isso usando a API de processo de alta resolução, aqui está o mesmo loop usando process.hrtime () :
var title= "Loop on numberss", t = process.hrtime();
var arr = [] , loopCount = 5000;
for (var i=0 ; i <loopCount; i++){
arr.push(Math.random() * 50000);
}
var t1 = process.hrtime(t);
console.log("%s %d seconds and %d nanoseconds", title, t1[0], t1[1]);
<Mais tarde naquele dia> Editar:
Paul Irish postou a seguinte postagem oportuna: http://updates.html5rocks.com/2012/08/When-milliseconds-are-not-enough-performance-now
Demonstrando o uso de:
window.performance.webkitNow ()
Para precisão de alta resolução no navegador também.