Executando verificação de segurança...
1

Cara, refutando um pouco do uriel, e trazendo um pouco sobre como uma linguagem de programação funciona, acredito ser por um cache de:

item.name.toLowerCase().indexOf(`lars`)

Assim como uma aplicação, se você roda cru, o tempo demora mais, mas se essa função já foi executada antes, a linguagem faz uma memoização dos resultados por um certo tempo para melhorar o desempenho e velocidade. Veja, você usa esse trecho na primeira, o código executa e guarda um cache, e na segunda, já tem o resultado que você espera receber!

Carregando publicação patrocinada...
1
1

Até onde sei, as engines não fazem memoização por default. Geralmente é algo que vc faz à parte, já que a engine em si não tem como garantir que a função é pura (sem efeitos colaterais), pois aí memoização não é indicado.

Tem que ver também o tamanho do array e os valores que ele contém, pode ter influência no resultado (para poucos dados, costuma ter mais distorções que desaparecem em datasets maiores).

É verdade que muitas engines usam alguma forma de JIT que pode fazer inline de funções e acelerar o processo. Mas isso só costuma acontecer se for executado muitas vezes, então se o array for pequeno, o efeito é mínimo ou até mesmo nulo.

Ou seja, meu palpite é que isso não seja a principal causa da diferença. Sugiro testar com o Benchmark.js ou outra lib similar, para ter resultados mais "limpos" que console.time.

1

Não me refutou, o que você disse não muda o que eu disse em nada, nem uma virgula!

Cada runtime e engine tem suas particularidades e foi isso que eu disse pra ele!