Em C # / VB.NET / .NET, qual loop é executado mais rapidamente for
ou foreach
?
Desde que li que um for
loop funciona mais rápido do que um foreach
loop há muito tempo, presumi que fosse verdade para todas as coleções, coleções genéricas, todas as matrizes etc.
Vasculhei o Google e encontrei alguns artigos, mas a maioria deles é inconclusiva (leia os comentários nos artigos) e é aberta.
O ideal seria ter cada cenário listado e a melhor solução para o mesmo.
Por exemplo (apenas um exemplo de como deve ser):
- para iterar uma matriz de mais de 1000 strings -
for
é melhor queforeach
- para iterar sobre
IList
cadeias (não genéricas) -foreach
é melhor quefor
Algumas referências encontradas na web para o mesmo:
- Artigo grandioso original de Emmanuel Schanzer
- CodeProject FOREACH vs. PARA
- Blog - Para
foreach
ou nãoforeach
, eis a questão - Fórum ASP.NET - NET 1.1 C #
for
vsforeach
[Editar]
Além do aspecto de legibilidade, estou realmente interessado em fatos e números. Existem aplicativos em que a última milha de otimização de desempenho compactada é importante.
foreach
vez de for
em C #. Se você vê aqui respostas que não fazem nenhum sentido, é por isso. Culpe o moderador, não as respostas infelizes.