Verificando o tempo para executar um trecho de código em Javascript

Uma tarefa que venho executando bastante nos últimos dias, principalmente por participar de alguns processos de seleção para projetos é em relação a performance de um trecho de código.

Em muitas destas entrevistas, fui questionado sobre a complexidade de minha solução utilizando a notação big-o (sim, aquela que gera algo como O(n) ou O(n²) para uma dada complexidade – iremos falar mais sobre isso em outros posts). Fora do mundo acadêmico (ou destes testes), eu prefiro checar a complexidade através do tempo de execução de um trecho de código.

Então, a ideia é a seguinte:

  1. salvamos a data/hora atual
  2. executamos o trecho de código
  3. pegamos a data/hora atual e subtraímos o valor encontrado no item 1.

Simples né? Vamos fazer agora em Javascritp:

O interessante é que em Javascript já temos uma maneira mais específica de fazer isso. Bastando apenas chamar console.time(“nome do timer”) no início, e console.endTime(“nome do timer”) no fim da execução. O código ficaria assim:

O tempo de execução será exibido em milisegundos em ambos os casos.

Um ponto muito importante quando estamos medindo o tempo de execução de um trecho de código é não executar console.log dentro de laços repetição ou dentro de algorítmo onde ele será executado várias vezes. O node/browser ou até mesmo a saída no console em outras linguagens é muito custosa, e vai atrapalhar seus testes, por deixar de maneira geral seu código rodando mais lentamente.

Existem outras formas de fazer isso, com profiling e outras ferramentas. Mas esse será tema para outro post 🙂

Não deixem de comentar e nos seguir em todas as redes sociais, até a próxima!