C# - Binäre Bäume-und Wörterbücher

Bin ich zu kämpfen mit dem Konzept der Verwendung von binary search trees und als Wörterbücher verwenden.

In meiner Anwendung habe ich ein kleines experiment, das den C5 Bibliothek TreeDictionary (was ich glaube, ist ein red-black binary search tree), und der C# - Wörterbuch. Das Wörterbuch war immer schneller bei add/find-Operationen und auch immer weniger Speicherplatz. Zum Beispiel, bei 16809 <int, float> Einträge, das Wörterbuch 342 Kb, während der Baum verwendet 723 KiB.

Dachte ich, dass BST ist eigentlich mehr Speicher effizient, aber es scheint, dass ein Knoten des Baumes erfordert mehr bytes als ein Eintrag in einem Wörterbuch. Was gibt? Gibt es einen Punkt, an dem BST-s sind besser als Wörterbücher?

Auch, als eine Seite Frage, weiß jemand, ob es ein schneller + mehr Speicher effizienten Datenstruktur für die Speicherung <int, float> Paare für dictionary-Datentyp Zugriff als die beiden genannten Strukturen?

  • Ganz ehrlich, ich würde nicht sorgen über die Speicher-Effizienz, wenn die app ist mit 723 KB. Ich würde wahrscheinlich anfangen, darüber nachzudenken, bessere Datenstrukturen wenn ich, sagen wir, 50 MB zum speichern der Sammlung.
  • Das Objekt hält die Daten-Struktur haben könnte, Tausende von Instanzen, so dass dann jedes kB zählt.
  • Versuchen SortedList<T,K> - es sollte die niedrigste Speicher-overhead der verschiedenen Optionen. Wenn es nicht zu langsam (in Ihrer Anwendung) und je KB ist wirklich egal, es scheint sicher lebensfähig. Hinzufügen/entfernen wird langsamer, aber lookup sollte ähnlich der BST.
Schreibe einen Kommentar