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