1
resposta

Utilização do Stream

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?

1 resposta

Boa tarde Vinícius tudo bem ?

Normalmente no dia a dia as implementações são testadas da mesma forma que você fez e de acordo com a performance, determinada abordagem é escolhida.

Tudo depende de como é implementado.

Você fez bem em testar, só assim para ter certeza se terá vantagens ou não, sem gerar impactos de performance na sua aplicação.

Bons estudos!