Jump to content
skm

Foreach vs For

Recommended Posts

skm

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/

Share this post


Link to post
Share on other sites
vitortomaz

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...

Share this post


Link to post
Share on other sites
pedrotuga

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.

Share this post


Link to post
Share on other sites
Rui Carlos

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.

Share this post


Link to post
Share on other sites
skm

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í...


"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/

Share this post


Link to post
Share on other sites
Knitter
We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.

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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.