Hi,
also mein Problem ist folgendes: Ich habe ca. 40.000 Schlüssel/Werte die ich in einer Liste anlegen muss. Das Problem ist das zu jedem Schlüssel 5 Werte gehören. Das heisst, Hashtable fällt weg - der kann schließlich nur pro Schlüssel einen Wert speichern.
Die Liste muss zudem noch auch irrsinnig schnell sein. Ich bekomme pro halbe Sekunde für ungef. 50 - 1000 Schlüssel Events. In diesen Events müssen die Werte der Schlüssel upgedated und verglichen werden. Das heisst also das das "Springen" zu den einzelnen Schlüsseln sehr schnell gehen muss.
Die Schlüsseln sind siebenstellige Zahlenwerte. Ich habe vorerst das Problem so gelöst, das ich einmal einen Array mit Grösse 10.000.000 angelegt habe. Danach habe ich die Schlüssel als Array-Indexe "Verpackt", also so:
...und so weiter bis alle 40.000 Schlüssel angelegt sind. Leider sind die Schlüssel nicht fortlaufend nummeriert, sondern halt unregelmässig. Also auf 1234567 folgt dann 1238888, dann 1260000 etc....
Sobald dann der Array befüllt ist, "prasseln" die Events ein. Meine Methode funktioniert eigentlich nicht schlecht, da im Event der Schlüssel mitgeliefert wird und der index sofort mit dem Schlüssel angesprochen werden kann. Trotzdem kommt sie mir etwas unorthodox vor, da eigentlich ein Array der Grösse 10 Millionen mit nur 40.000 Einträgen befüllt wird. Gibts da bessere Methoden?
also mein Problem ist folgendes: Ich habe ca. 40.000 Schlüssel/Werte die ich in einer Liste anlegen muss. Das Problem ist das zu jedem Schlüssel 5 Werte gehören. Das heisst, Hashtable fällt weg - der kann schließlich nur pro Schlüssel einen Wert speichern.
Die Liste muss zudem noch auch irrsinnig schnell sein. Ich bekomme pro halbe Sekunde für ungef. 50 - 1000 Schlüssel Events. In diesen Events müssen die Werte der Schlüssel upgedated und verglichen werden. Das heisst also das das "Springen" zu den einzelnen Schlüsseln sehr schnell gehen muss.
Die Schlüsseln sind siebenstellige Zahlenwerte. Ich habe vorerst das Problem so gelöst, das ich einmal einen Array mit Grösse 10.000.000 angelegt habe. Danach habe ich die Schlüssel als Array-Indexe "Verpackt", also so:
Code:
Dim arr(10000000,4) as single
...
'Schlüssel ist 1234567:
arr(1234567,0) = 23
arr(1234567,1) = 55
arr(1234567,2) = 3
arr(1234567,3) = 2
arr(1234567,4) = 98
...und so weiter bis alle 40.000 Schlüssel angelegt sind. Leider sind die Schlüssel nicht fortlaufend nummeriert, sondern halt unregelmässig. Also auf 1234567 folgt dann 1238888, dann 1260000 etc....
Sobald dann der Array befüllt ist, "prasseln" die Events ein. Meine Methode funktioniert eigentlich nicht schlecht, da im Event der Schlüssel mitgeliefert wird und der index sofort mit dem Schlüssel angesprochen werden kann. Trotzdem kommt sie mir etwas unorthodox vor, da eigentlich ein Array der Grösse 10 Millionen mit nur 40.000 Einträgen befüllt wird. Gibts da bessere Methoden?