我有这个简单的循环:
int[] array = new int[100000000];
int sum = 0;
for (int i = 0; i < array.Length; i++)
sum += array[i];
Run Code Online (Sandbox Code Playgroud)
我将其性能与C++版本进行了比较.我认为性能应该接近相同,因为它是非常简单的代码,在这种情况下省略了范围检查.但事实证明,C++版本几乎快了三倍.所以我已经实现了C#unsafe版本,但性能更差.Resharper建议将循环转换为linq表达式,如下所示:
sum = array.Sum();
Run Code Online (Sandbox Code Playgroud)
该代码比C#中的原始循环慢很多倍
有人可以告诉我,如果有更多的东西我可以做以改善这个循环的性能(没有将其编译为64位版本 - 这是两倍的速度).
所有测试均在32位Release版本上进行,无需调试器即可运行.
编辑:小修正.64位版本的双倍速度快两倍,而不是整数
我有一个Device名称空间的类Proj.Devices.此类Message是否可以访问名称空间中的类Proj.Devices.Messages.这两个类都在同一个项目中.我不是在问这是否可行,但这是否是一种不好的做法?
如果我将这个项目拆分为单独的项目,我认为循环引用会有问题但是这样可以吗?
编辑:我在命名空间命名指南中找到了这个
"嵌套命名空间应该依赖于包含命名空间中的类型.例如,System.Web.UI.Design中的类依赖于System.Web.UI中的类.但是,System.Web.UI中的类不依赖于System.Web.UI.Design中的类."