Eigentlich, Dictionary<,>
ist oft Langsamer als eine lineare Suche, da die Logik des Wörterbuchs (Haches, Buckets usw.) sehr komplex ist. In meinen Tests wurde der Cutoff (wo Dictionary<,>
beginnt, schneller zu werden) liegt oft bei 150 Elementen. Und da Sie in der Regel viel weniger Tabellen als 150 haben, würde ich mit einer linearen Liste für die Leistung zufrieden sein.
(was keineswegs bedeutet, dass man keine Dictionary<T>
; es bedeutet nur, dass Leistung ist vielleicht nicht der Hauptgrund für diesen speziellen Anwendungsfall; die eindeutige Schlüsselerzwingung und das foo["bar"]-Modell könnten es sein)
Dies liegt zum Teil an der Komplexität des Hashwerts - der GetHashCode()
para string
ist insbesondere relativ teuer (obwohl int.GetHashCode()
ist rasend schnell ;-p).
In Wirklichkeit werden Sie bei den meisten kleinen Datensätzen nie einen Unterschied zwischen den beiden feststellen. Wenn Sie große Datenmengen haben, müssen Sie das natürlich einplanen und entsprechend codieren.
Weitere Unterschiede zwischen einer Dictionary<,>
und so etwas wie ein List<>
sind Dinge wie Einzigartigkeit: ein Dictionary<,>
lässt keine doppelten Schlüssel zu (obwohl ein Lookup<,>
in .NET 3.5 wird).