C# · 12月 29, 2021

大数组算术C#

在C#中存储2D数组的最佳方法是为了在对数组中的元素执行大量算术时优化性能?

我们有大(约1.5G)的阵列,例如我们要通过元素与每个其他元素相乘.性能至关重要这样做的上下文是在c#中.有没有什么聪明的方式存储数组和迭代?我们可以将这些部分写在非托管C中,这样会提高性能吗?需要对c#程序的其余部分访问数组.

目前(在c)数组存储为单个长向量.我们对数组中的每个元素执行计算,并覆盖旧值.对于向量中的每个元素,计算通常是唯一的.

定时实验表明,在C#中存储和迭代数据作为数组比将其存储为2D数组慢.我想知道是否有更好的处理数据的方法.执行的具体算术与问题无关.

解决方法 安娜,

这是一个伟大的页面,讨论传统科学编程语言(fortran,C)和c#之间的性能差异.

http://msdn.microsoft.com/en-us/magazine/cc163995.aspx

根据文章C#,当使用矩形数组(2d)可以是一个非常好的表演者.这是一个图形,显示了锯齿状阵列(阵列阵列)和矩形阵列(多维)阵列之间的性能差异.

alt text http://i.msdn.microsoft.com/cc163995.fig08.gif

我建议您尝试自己,并使用VS 2008中的性能分析进行比较.

如果使用C#是“足够快”,那么您的应用程序将更容易维护.

祝你好运!