我有这个简单的循环:
int[] array = new int[100000000];
int sum = 0;
for (int i = 0; i < array.Length; i++)
sum += array[i];
我将其性能与其 C++ 版本进行了比较。我认为性能应该接近相同,因为它是非常简单的代码,并且在这种情况下省略了范围检查。但事实证明,C++ 版本的速度几乎快了三倍。所以我实现了 C# 不安全版本,但性能更差。Resharper 建议将循环转换为 linq 表达式,如下所示:
sum = array.Sum();
该代码比 C# 中的原始循环慢很多倍
有人可以告诉我是否可以做更多的事情来提高此循环的性能(无需将其编译为 64 位版本 - 速度快两倍)。
所有测试均在 32 位发布版本上进行,无需调试器即可运行。
编辑:小修正。64 位版本使用双精度而不是整数快两倍