Thread Hash mit Arrays zu langsam - wie sortieren und suchen?
(38 answers)
Opened by Gast at 2009-01-28 14:02
@LanX + alle
Um dem ganzen etwas Leben einzuhauchen: Es sind Kartendaten. Zwei Karten mit Straßen des selben Gebietes. Straßen sind in Edges unterteilt. Jedes Edge besteht aus Start X,Y und und End X,Y. Da eine Straße mehrere Spuren in verschiedene Richtungen hat, muss ich Start und Endpunkt als einheit betrachten, um so die Richtungsinformation zu erhalten - deswegen 4-dim Punkt. Mein Ausgangsproblem war, dass ich gute Routendaten für eine Simulation hatte, aber schlechtes KArtenmaterial. Jetzt muss ich die alten Routen von der alten Karte auf die neue übertragen. Also, momentan habe ich ein 2 Hashes (A und B), bestehend jeweils aus einem eindeutigen Key (Edge ID zb. "ab3495") und einem Value-Array aus 4 Punkten welche Start und Endkoordinate des Edge darstellen. Diese Punkte sind Dezimalwerte, in Größenordnungen von 700.000, falls von Bedeutung. Jedes Hash hat etwa um die 100.000-150.000 Einträge. Ich muss das ganze genau einmal machen, um dann eine Mappingtabelle zu erstellen, sprich ein neuer Hash C in dem alle Edges des alten Kartenmaterials (Hash A) einem Edge aus dem neuen Material (Hash B) zugerodnet werden. Diese Zuordnung soll eben durch einen Algorithmus hergestellt werden, der das nächste Punktepaar finden. Zum Thema QuadTree: Der vorliegende Algorithmus hat noch den NAchteil das der Hierarchielevel fest angegeben wird und so all Knoten immer Children habe auch wenn gar keine Punkte vorhanden sind. Warscheinlich wird das eine riesiege Datenmenge in meinem Fall. Zweitens lässt sich nur nachschauen, welche Punkte in einer Angegebenen Region befinden, aber nicht den nächsten Punkt zu einem vorgegebenen PUnkt. IMO müsste man intelligenter vorgehen, und nur verzweigen, wenn auch ein Punkt in dieser region ist. UNd dann auch soweit verzeigen, dass am Ende nur noch ein oder wenige Punkte in einem Leaf stecken! |