c# - 在 .NET 中,哪个循环运行得更快, 'for' 还是 'foreach'?

标签 c# .net performance for-loop

在 C#/VB.NET/.NET 中,forforeach 哪个循环运行得更快?

自从我读到 for 循环比 foreach 循环工作得更快之后,我就知道了 long time ago我假设它适用于所有集合、通用集合、所有数组等。

我搜索了 Google 并找到了几篇文章,但其中大部分是不确定的(阅读文章评论)并且是开放式的。

理想的做法是列出每种情况并列出相应的最佳解决方案。

例如(只是它应该如何的一个例子):

  1. 用于迭代 1000+ 的数组 字符串 - for 优于 foreach
  2. 用于遍历 IList(非通用)字符串 - foreach 更好 比

在网络上找到了一些相同的引用资料:

  1. Original grand old article by Emmanuel Schanzer
  2. CodeProject FOREACH Vs. FOR
  3. Blog - To foreach or not to foreach, that is the question
  4. ASP.NET forum - NET 1.1 C# for vs foreach

[编辑]

除了它的可读性方面,我对事实和数字非常感兴趣。在某些应用程序中,压缩的最后一英里性能优化确实很重要。

最佳答案

Patrick Smacchia blogged about this上个月,得出以下结论:

  • for loops on List are a bit more than 2 times cheaper than foreach loops on List.
  • Looping on array is around 2 times cheaper than looping on List.
  • As a consequence, looping on array using for is 5 times cheaper than looping on List using foreach (which I believe, is what we all do).

关于c# - 在 .NET 中,哪个循环运行得更快, 'for' 还是 'foreach'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/365615/

相关文章:

c# - 在 C 中使用 WinSock 将数据发送到同一台机器上的 c# 应用程序,“目标主机拒绝连接(c# 部分)

c# - 这种带有隐式转换运算符的 Nullable<T> 行为的理由是什么

c# - 如何使用方法替换特定的字符串?

php - PHP select where 与 left join 的性能

c# - C#中VB6中ObjPtr的等效(功能)?

c# - C#计算平均经纬度

c# - 为什么 AutoMapper 不使用 ProjectTo 映射二级导航属性?

.net - 我需要 Microsoft.NETCore.Platforms 和 Microsoft.NETCore.Runtime 吗?

php - MySQL数据库: high performance random lookups

c - 向量化嵌套索引