No tópico "Substituir algoritmo" o instrutor escreveu a seguinte afirmação
"[02:44] Ao invés de estar trabalhando com "for" simples, porque a gente já não trabalha com Strings, lambdas, de forma a fazer a somatória dos valores de todos os livros? Essa técnica, a técnica que nós vamos aplicar aqui, é chamada de substituir algoritmo, que pode ser aplicado por uma série de razões, você pode achar que o algoritmo que está sendo usado é lento, é confuso, ou a gente quer, simplesmente, utilizar algum recurso novo da nossa linguagem, que pode ser, comprovadamente, mais rápido ou mais legível."
Eu realizei um teste utilizando stream para calcular a média de uma lista de valores. O resultado que obtive é que a implementação com stream demorou 74,29 ms e a versão tradicional com for demorou 21,01 ms. Ou seja, o uso do Stream foi 3,53 vezes mais lento do que o método tradicional. Segue abaixo as implementações utilizadas nessa comparação.
public double calculaMedia()
{
double soma=0;
for (Double integer : valores)
soma+=integer;
return soma/valores.size();
}
public double calculaMediaStream()
{
double soma=valores.stream().reduce(0d,(t, u) -> t+u );
return soma/valores.size();
}
Gostaria de saber algum exemplo onde essa abordagem é mais rápida?