找出两个多维双数组之间的差异

时间:2017-03-03 11:41:33

标签: c# multidimensional-array

我有2个多维双数组,包含来自同一坐标系的X,Y,Z值。

我想比较数组并将不同的点提取到一个新的 array / list。我试过For循环,但速度很慢。

是否有更快的解决方案来实现我的范围?

数组格式:

double [100000,3] array1;-->Columns represt X-Y-Z 

double [150000,3] array2;-->Columns represt X-Y-Z 

谢谢

1 个答案:

答案 0 :(得分:2)

你的问题在于,你认为你需要一些神奇的算法来做得更好,但是你已经在forloop的正确轨道上了。

对于数组的大小,预定是一项长期任务。

因此,要优化性能,您可以使用forloop,您只需要像以下一样使用它:

Parallel.ForEach(GetMultipleChunksFromArray(yourArray, yourOtherArray), (chunks) => 
{
    //your forloop goes here
    for (int i = 0; i < chunks.firstArrayChunk.Length; i++) {
         //comparing logic
    }
}

对于结果,您需要小心一点,因为您并行运行多个比较操作,您需要有一个线程安全的结果,如并发字典,其中添加了所有差异。