Nesse post vou mostrar através de um exemplo qual laço tem o melhor tempo de execução, só lembrando que o uso de cada um depende da ocasião e a escolha de quando usar nem sempre é baseado no tempo de execução.
- Para o exemplo:
- Node v12.x
- Visual Studio Code
Vamos a codificação, no terminal execute mkdir exemplolacos e depois cd exemplolacos e por ultimo npm init -y .
No Visual Studio Code crie um arquivo chamado servico.js, para o exemplo vamos consumir uma API o https://swapi.co/ que retorna informações de Star Wars. Para o consumo da API vou usar axios https://www.npmjs.com/package/axios
Execute o comando npm i axios para adiciona ao package.json nas dependências.
O código do servico.js é mostrado abaixo:
const axios = require('axios');
const urlBase = 'https://swapi.co/';
async function obterPessoas(nome) {
const url = `${urlBase}/api/people/?search=${nome}&format=json`;
const resposta = await axios.get(url);
return resposta.data;
}
module.exports = {
obterPessoas
}
No código importamos o axios através do require que usamos para realizar um get na API, é uma operação bem simples.
Tive que criar a função assíncrona, pois o retorno do get é de forma assíncrona, feito isso exportamos a função module.exports para ser usado em outros arquivos.
Agora vamos criar um novo arquivo chamado lacos.js no mesmo nível do servico.js.
O código do arquivo lacos.js encontra-se abaixo:
const servico = require('./servico');
async function main() {
try {
const resultados = await servico.obterPessoas('a');
const names = [];
/** 1 - For*/
console.time('for');
for (let i = 0; i <= resultados.results.length - 1; i++) {
const pessoa = resultados.results[i];
names.push(pessoa.name);
}
console.timeEnd('for');
/** 2 - Forin*/
console.time('forin');
for (let i in resultados.results) {
const pessoa = resultados.results[i];
names.push(pessoa.name);
}
console.timeEnd('forin');
/** 3 - Forof*/
console.time('forof');
for (pessoa of resultados.results) {
names.push(pessoa.name);
}
console.timeEnd('forof');
//imprimir resutados
console.log('nomes', names);
} catch (error) {
console.error('houve erro', error);
}
}
main();
No código fiz a divisão para cada for, o resultado dos tempos de execução segue abaixo:
$ node lacos.js
for: 0.580ms
forin: 0.068ms
forof: 0.423ms
Como podemos observar pelo tempos o que teve melhor desempenho foi o forin, claro que só essa informação não define qual devemos usar, o uso vai depender de cada caso, a tomada de decisão será definida pela necessidade na hora de desenvolver e da complexidade da lista que estamos manipulando.
O código completo no link: https://github.com/wandealves/exemplolacos
Top comments (0)