我有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
谢谢
答案 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
}
}
对于结果,您需要小心一点,因为您并行运行多个比较操作,您需要有一个线程安全的结果,如并发字典,其中添加了所有差异。