小编use*_*433的帖子

我该怎么做才能使这个循环运行得更快?

我有这个简单的循环:

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位版本的双倍速度快两倍,而不是整数

c# performance for-loop

9
推荐指数
3
解决办法
1万
查看次数

可以在父命名空间中的类访问子命名空间中的类

我有一个Device名称空间的类Proj.Devices.此类Message是否可以访问名称空间中的类Proj.Devices.Messages.这两个类都在同一个项目中.我不是在问这是否可行,但这是否是一种不好的做法?

如果我将这个项目拆分为单独的项目,我认为循环引用会有问题但是这样可以吗?

编辑:我在命名空间命名指南中找到了这个

"嵌套命名空间应该依赖于包含命名空间中的类型.例如,System.Web.UI.Design中的类依赖于System.Web.UI中的类.但是,System.Web.UI中的类不依赖于System.Web.UI.Design中的类."

c# namespaces

5
推荐指数
2
解决办法
2340
查看次数

标签 统计

c# ×2

for-loop ×1

namespaces ×1

performance ×1