Quer fazer a boa no seu time e trazer uma baita performance pra sua aplicação com pouco esforço? se liga nessa dica! 🤯
De um ctrl+f e busque pelo #find e se possível os substitua por uma estrutura de dados #Map
Sabe por que? 🧐
#BuscaLinear (find):
Percorre o array objeto por objeto até encontrar o que procura.
Complexidade de tempo: O(n), onde n é o número de objetos no array.
#Índices:
Complexidade de tempo: Aproximadamente O(1) (em média, para a maioria dos casos).
Para buscas frequentes, pode ser benéfico usar índices com base na propriedade que você está pesquisando.
🔎 Busca linear: #find
As formas mais tradicionais de busca em arrays no #javascript é o #find, mas ele apesar de muito útil, ele tem um problema, ele é linear O(n), onde pode percorrer todo o seu arrau até encontrar o que deseja.
const product = products.find(p => p.id === 1);
⚡️ Índices: #Map
Uma forma de otimizar muitos cenários de busca é usar a estrutura de dados #Map
No link acima eu deixo um #benchmark com um #exemplo de busca de produtos onde você pode ver um resultaod semelhante a esse aqui :
Busca Linear: 12.647450000047684ms
Busca via Map: 0.005816996097564697ms
Conclusão
Usar a estrutura de dados correta na hora de fazer uma busca pode impactar muito no tempo de resposta e consumo de recurso da sua aplicação, claro que nem sempre iremos poder usar uma estrutura de dados do tipo Map ou Object, mas tenho certeza que em muitos casos você consegue substituir a criaçao da sua lista por um Map e ganhar um baita ganho de performence!
Sente falta de algo?
Quer sugerir algum assunto pra nossa news letter? manda ele aqui nesse form ó ;)
Obrigado por ler a High performance letter! Se inscreva para receber mais conteúdos como esse 😉.
Faz sentido, inclusive se estivermos trabalhando com hardware ainda mais limitado, a diferença é maior.
No seu caso aí, a busca linear é 2174x mais lenta.
Porém com um processador Allwinner H3, a busca linear é 12945x mais lenta.
Segue os números:
Busca Linear: 1086.3157320022583ms
Busca via Map: 0.08391618728637695ms