c# - C# 编译器不会优化 foreach 吗?

标签 c# performance

我读过很多次 foreach 在数组上的执行效率比 for 低一些(因为它需要构造函数/使用迭代器)并且人们提倡使用 for 循环。

我对编译器没有优化它感到有点惊讶(又名:将它转换为简单的 for 循环 IL 代码)。 visual studio 2015 编译器为我们做了这么多(C# 6 语言特性)为什么不修复 foreach 的这种“不太为人所知”的错误用法?

最佳答案

foreach 在数组上的性能比 for 差的说法是不正确的。 Jon Skeet 对两者进行了性能比较:

并得出结论,对于数组“编译器发出大致相同的代码”,并且对于他的基准测试,“结果基本相同。”

关于c# - C# 编译器不会优化 foreach 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35476668/

相关文章:

c# - Windows Phone 应用程序有类似 snoop 的工具吗?

python - Django 这么慢? errno 32 管道破裂? dcramer-django-哨兵-?静态文件夹?

c# - 在 C/C++ 中重写 C# 代码的性能提升

c - 一次构建后从 Visual Studio 2017 调试/运行非常慢

c# - 用 Entity Framework 和 POCO 类替换遗留数据层的策略

javascript - 使用 SPA 对 Microsoft Graph 进行身份验证,然后在 Web API 中使用 token

c# - 不允许新事务,因为 session 中还有其他线程正在运行。 Entity Framework

c# - 在 ListView 中注册双击一行

ruby-on-rails - 如何避免在依赖于 Rails 的销毁中进行 N+1 查询?

java - 绘制缓冲图像时 Java 2D 的性能问题