2017-03-03 6 views
2

Ich habe 2 mehrdimensionale Doppelarrays, die X-, Y- und Z-Werte aus demselben Koordinatensystem enthalten.Finden Sie den Unterschied zwischen zwei multidimensionalen Doppelarrays

Ich möchte die Arrays vergleichen und die verschiedenen Punkte zu einem neuen Array/Liste extrahieren. Ich versuchte For-Schleife, ist aber sehr langsam.

Gibt es schnellere Lösungen, um mein Ziel zu erreichen? Format

Arrays:

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

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

Danke

+1

Können Sie zeigen, was Sie ausprobiert haben? – pinkfloydx33

+0

Nun, For-Schleife scheint der beste Weg zu gehen. Und für größere Arrays braucht es Zeit. –

Antwort

2

Ihr Problem hier ist, dass Sie denken, Sie etwas Magie Algorithmus müssen es besser machen, aber sie waren bereits auf dem richtigen Weg mit dem forloop.

Und für die Größe Ihres Arrays ist dies prädestiniert, eine lange Aufgabe zu sein.

So um die Leistung zu optimieren Sie Ihre forloop verwenden können, müssen Sie nur noch wie es verwenden parallel:

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

Für das Ergebnis, das Sie ein wenig vorsichtig sein müssen, da Sie mehrere compareoperations parallel laufen Sie müssen ein threadsicheres Ergebnis wie ein Concurrent Dictionary haben, in dem alle Unterschiede hinzugefügt werden.

+0

Ich denke, dass Parallel würde die Zeit reduzieren. Ich bin neu im Programmieren, also habe ich Ideen, aber es ist nicht einfach für mich, sie anzuwenden. –

Verwandte Themen