Ich halte Interfaces, die eine
GUID haben, in einer Liste.
Mit Hilfe binärer Suche werden die Interfaces anhand der
GUID sortiert eingefügt und wieder herausgesucht.
Das funktioniert schnell und gut.
Jetzt wollte ich testen, ob es mit einem Dictionary noch schneller ginge.
Irgendwas mache ich offenbar falsch.
Count erhöht sich nach einem Add. Aber der Eintrag wird dann nicht gefunden.
Das Ganze sieht etwa so aus:
Delphi-Quellcode:
IMyInf =
Interface
property Guid: TGuid ...
...
end;
aGuid := MyIntf.Guid;
MyDict.Add(aGuid, MyIntf);
MyDict.TryGetValue(aGuid, MyIntf);
// MyIntf ist immer nil
Die
GUID´s sind in Ordnung und stimmen überein.
Gestern Abend konnte ich nicht weiter suchen.
Kann sein, dass ich einen anderen Fehler im Projekt habe, aber eigentlich sollte es dort so sein, wie hier zusammengefasst.
Oder ist mein Ansatz falsch?
Und macht es in meinem Beispiel überhaupt Sinn, von binärer Suche auf ein Dictionary umzustellen? Es können ein paar tausend bis zu einigen Mio Interfaces verwaltet werden.
Und was genau gibt Capacity im Constructor an (ich habe dazu keine klare Aussage in der Hilfe gefunden). Ich kenne es so, dass diese die Anzahl der Cluster angibt, auf die die Einträge aufgeteilt werden.
Scheinbar wird diese dann dynamisch erhöht. Stimmt das? Wie soll das funktionieren, dass dann noch Einträge wiedergefunden werden?
Emba setzt da in der Hilfe wohl zu viele Vorkenntnisse voraus. Jedenfalls kann ich da einiges nicht richtig einordnen.