Foreach vs For - C# - Portugal-a-Programar
By skm, August 21, 2008 in C#
Ao responder a um topico aqui no P@P, deparei-me com um codigo com alguns foreach que manipulavam tipos não nativos.
O foreach é mais lento do que o for na maior parte dos casos. Pela minha experiencia o for é sempre mais rapido mesmo em collections.
Também li um pouco sobre este assunto Mais informação.
Por isso criei este topico para que possamos debater um pouco esta questão. O que acham ? devemos usar o foreach ou o for.
"There are two kinds of programmers. Those who write something to get the work done and those who want to write good code."João BrandãoWebsite e blog: http://jamab.blogspot.com/
apesar do for poder ser mais eficiente acho que vou continuar sempre a usar o foreach sempre que precisar dele, é mais rápido de escrever e a diferença de eficiência dificilmente se notará na maioria das aplicações...
o foreach tem menos performance... so deve ser utilizado em condições especiais
Eu nunca o uso... for é que é
A diferença de performance é em 99% dos casos virtualmente inesistente, já a economia de código é uma coisa muito importante pois é um factor importante para a productividade de um programador.
foreach é das minhas keywords favoritas nas linguagens mais modernas.
Ainda gostava de saber qual a razão pela qual o foreach é menos eficiente... Sendo um caso particular do for, devia, no mínimo, ter a mesma eficiência.
O foreach pode ser um caso particular do for, mas a ussa implementação de baixo nivel é muito diferente.
O assembly gerado para o for e para o foreach são bastante diferentes. A perca de performance esta aí...
Uma das frases que mais sigo.
Qual é a importância de escolher um for, em detrimento de um foreach, quando nem se sabe se esse será um dos pontos que provoca a lentidão da aplicação? Vale a pena perder a legibilidade por uma optimização que dificilmente se fará sentir?
Convenhamos, os ciclos onde aplicamos o foreach não são o grosso da nossa execução, não são onde o código mais executado, se eventualmente a diferença de performance depender de um ciclo desse tipo, então isso é algo que se detecta depois da aplicação feita com testes e profilling, optimizar antes não traz vantagens.
Uso um ou outro consoante seja melhor para a escrita e leitura do código e não a pensar se será mais ou menos optimizado.