Ir para o conteúdo
skm

Foreach vs For

Mensagens Recomendadas

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
vitortomaz    1
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...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    311
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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
skm    0
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í...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Knitter    101
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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade