Check the runtime of a Javascript function

4

I would like to know if it is possible to know the running time of a particular javascript function.

This function does not need to fetch external data, it can only handle form tags, set value, calculate fields, like this:

function idade(ano_aniversario, mes_aniversario, dia_aniversario) {
var d = new Date,
    ano_atual = d.getFullYear(),
    mes_atual = d.getMonth() + 1,
    dia_atual = d.getDate(),

    ano_aniversario = +ano_aniversario,
    mes_aniversario = +mes_aniversario,
    dia_aniversario = +dia_aniversario,

    quantos_anos = ano_atual - ano_aniversario;

if (mes_atual < mes_aniversario || mes_atual == mes_aniversario && dia_atual < dia_aniversario) {
    quantos_anos--;
}

return quantos_anos < 0 ? 0 : quantos_anos }
    
asked by anonymous 10.07.2015 / 14:52

3 answers

5

As Miguel Angelo said , in modern browsers you can measure the time elapsed with precision of fractions of milliseconds, using the object performance . The logic is the same as the other answers, but in order not to get repetitive I will suggest a generic function that measures the execution time of any other function that is passed (except asynchronous operations):

// Passe a função desejada. Se ela esperar parâmetros,
// passe os parâmetros na sequência. Exemplo:
// tempoDecorrido(minhaFuncao, 1, true, {teste:10});
function tempoDecorrido(funcao) {
    // pega os argumentos a serem repassados
    var args = Array.prototype.slice.call(arguments, 1);

    // logo antes da execução
    var inicio = performance.now();

    // executa a função passada, passando os argumentos se for o caso
    funcao.apply(null, args);

    // logo após a execução
    return performance.now() - inicio;
}

// Faz um loop de x a x+9
function minhaFuncao(x) {
    for(var i=x; i<x+10; i++) console.log(i);
}

// Testando
console.log(tempoDecorrido(minhaFuncao, 10));
    
10.07.2015 / 21:43
3

You can capture the start time of your method and remove the time from the current time to the end of the execution:


function seuMetodo()
{

var start = new Date();

for (var i=0; i<=30; i++) {
       console.log('mostra: '+i);
 }
var time = new Date() - start;
return 'tempo: '+time;
} 
seuMetodo();
    
10.07.2015 / 18:32
3

To register the runtime, simply register the beginning and the end within your target function.

With JavaScript you can use the getTime() of the object Date() , which even returns you the numeric value corresponding to the time for the specified date according to universal time.

function tempoDecorrido() {

  var fim = new Date().getTime();

  var tempo = fim - inicio;

  alert('Tempo de execução: ' + tempo);
}


var inicio;

function idade() {

  inicio = new Date().getTime();

  /* a função deve ser chamada no fim da "idade", 
   * mas aqui chamamos após 1 segundo, para simular
   * que estivemos a trabalhar durante esse tempo
   */
  setTimeout(tempoDecorrido, 1000);
}

idade();
    
10.07.2015 / 21:29