Início
Há algum tempo, me pego pensando na frase que dá título a este artigo e resolvi testar um exemplo muito presente no meu cotidiano: Promises.
Promises
O ES6 (ECMAScript 2015) trouxe muitas evoluções para a linguagem, e uma delas prometia (sem trocadilhos) fornecer uma maneira mais legível de lidar com operações assíncronas no meu amado JS, em comparação com as "confusas" e "esquisitas" callbacks: a Promise
O custo
Com as promises, a complexidade de lidar com operações assíncronas foi abstraída para essas entidades, facilitando muito a manutenção do código que criamos no nosso cotidiano. Mas será que a utilização dessas novas entidades traz um custo na performance dos nossos programas? Se sim, qual preço estamos pagando por essa abstração que nos ajuda? Qual o custo das promises?
O teste
Com esses questionamentos, resolvi fazer um pequeno teste sintético (nada científico e pouco acurado) para medir o custo no quesito tempo de se usar promises. O teste consiste em fazer um loop executar uma função especial que tem a tarefa de declarar uma constante e armazená-la em uma lista declarada fora do escopo da função. A função especial foi feita em duas versões: uma utilizando Callbacks e outra utilizando Promises. Ao final, é logado no console o resultado com o tempo de execução do cenário.
Código com promise:
Código com callbacks:
O código completo está disponível no link para o meu repositório
Resultado
Como mostram as imagens, utilizar promises no lugar de callbacks gera um custo na performance no quesito tempo de forma constante.
Teste feito com callback:
Teste feito com Promises:
Execução dos testes:
Conclusão
É de extrema importância destacar que meu objetivo com esse teste bobo não é fazer alguém parar de utilizar promises e voltar a utilizar callbacks para lidar com operações assíncronas. O objetivo deste post é mostrar que as abstrações que nós utilizamos no nosso cotidiano têm um custo e que é ideal estarmos cientes desse custo para que possamos tomar melhores decisões no desenvolvimento das nossas aplicações.
Top comments (0)