Loop com While e For - Qual é mais rápido?

5 respostas
JuniorVaz

Pessoal, alguém no Fórum já fez o teste em Java processando grande número de informação usando Loop para ver se existe diferença de tempo na execução entre While e For ? Algumas linguagens o For internamente é um While implementado, no Java será que seria também ?!

5 Respostas

ViniGodoy

Não há muita diferença. Na maior parte das linguagens, os dois acabam sendo convertidos para os mesmos JMPs no assembly.

Não se preocupe em velocidade com aspectos tão básicos. Existem outros gargalos muitíssimo mais significativos em seu programa, antes que você tenha que pensar sobre que tipo de comando desses é mais rápido.

Hebert_Coelho

Pq c ñ faz um teste? Faça um loop com sei lá, 10 milhões de iterações e anote a diferença do tempo. (:

ViniGodoy

Dificilmente esse teste vai funcionar. =(

O compilador identificaria o dead code e eliminaria. Os dois loops seriam instantâneos. Se você colocar QUALQUER operação dentro do loop (mesmo que uma soma, creio eu) você terá o ruído dessa operação impactando nos resultados.

Para esse tipo de teste, seria ligeiramente mais confiável descompilar o bytecode e ver o resultado gerado. Entretanto, para saber MESMO, só vendo o código que JVM compila no final.

Hebert_Coelho

Dificilmente esse teste vai funcionar. =(

O compilador identificaria o dead code e eliminaria. Os dois loops seriam instantâneos. Se você colocar QUALQUER operação dentro do loop (mesmo que uma soma, creio eu) você terá o ruído dessa operação impactando nos resultados.

Para esse tipo de teste, seria ligeiramente mais confiável descompilar o bytecode e ver o resultado gerado. Entretanto, para saber MESMO, só vendo o código que JVM compila no final.
Legal. (:

Ataxexe

O interessante é que isso pode até ficar de lado quando tomamos um lado mais funcional. Usar as lambda expressions com o Collections#forEach, por exemplo, acaba abstraindo o loop. E voltamos ao argumento do Vini de que há muitos outros pontos mais significativos no programa.

Criado 16 de março de 2015
Ultima resposta 17 de mar. de 2015
Respostas 5
Participantes 4