在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#是“足够快”,那么您的应用程序将更容易维护.
祝你好运!