在c# / VB.NET/。哪个循环运行得更快,for还是foreach?
自从很久以前我读到for循环比foreach循环工作得快,我就认为它适用于所有集合、泛型集合、所有数组等。
我搜索了谷歌,找到了几篇文章,但大多数都是不确定的(阅读文章评论),而且是开放式的。
理想的情况是列出每种情况以及最佳解决方案。
例如(这只是一个例子):
用于迭代1000+的数组
字符串- for比foreach好
对于迭代IList(非泛型)字符串- foreach更好
比
在网上找到了一些相同的参考资料:
由Emmanuel Schanzer撰写的原创文章
CodeProject FOREACH Vs. FOR
博客——去博客还是不去博客,这是个问题
ASP。NET论坛- NET 1.1 c# for vs foreach
(编辑)
除了可读性之外,我对事实和数据真的很感兴趣。在某些应用中,最后一英里的性能优化确实很重要。
我认为使用Parallel.ForEach()以及ConcurrentDictionary或ConcurrentBag会更快
下面是Parallel.ForEach()的例子
var primeNumbers = new ConcurrentBag<T>();
Parallel.ForEach(numbers, number =>
{
if (IsPrime(number))
{
primeNumbers.Add(number);
}
});
And
var productImage = new ConcurrentDictionary<int,ResultModel>();
Parallel.ForEach(pendingActiveImagesBatch, pictureItem =>
{
productImage.TryAdd(pictureItem.Id,pictureItem));
});
引用平行。ForEach
参考ConcurrentDictionary最后