Dictionaries - schnell und effizient?

16/10/2007 - 21:22 von Michael Stum | Report spam
Hallo,

ich muss in einer Anwendung eine Art verschachteltes assoziatives Array
abbilden, also so etwas:

ID
+--Titel => Wert
+--Datum => Wert
+-- ...
+-- ...

Das Problem ist, das ich davon ca. 100.000 Stück kurzzeitig im Speicher
halten muss und daher nicht eine eigene Klasse schreiben will (Der
overhead scheint mir zu groß).
Da das "innere array" nicht typsicher sein muss, dachte ich an ein
Dictionary<int,Dictionary<string,string>> - das soll wohl seit .net 2.0
besser sein als eine Hashtable und macht eigentlich genau das, was ich will.

Gàbe es eine resourcenschonendere Möglichkeit, so eine Struktur intern
abzubilden, oder ist ein verschachteltes Dictionary schon der idealfall?


http://www.Stum.de

e-Mail Adresse ist gültig, wird aber àußerst selten gelesen.
 

Lesen sie die antworten

#1 Thomas Östreich
17/10/2007 - 10:28 | Warnen spam
Hallo Michael

ich muss in einer Anwendung eine Art verschachteltes assoziatives Array
abbilden, also so etwas:

ID
+--Titel => Wert
+--Datum => Wert
+-- ...
+-- ...

Das Problem ist, das ich davon ca. 100.000 Stück kurzzeitig im Speicher
halten muss und daher nicht eine eigene Klasse schreiben will (Der
overhead scheint mir zu groß).
Da das "innere array" nicht typsicher sein muss, dachte ich an ein
Dictionary<int,Dictionary<string,string>> - das soll wohl seit .net 2.0
besser sein als eine Hashtable und macht eigentlich genau das, was ich
will.



Ist das Dictionary nicht auch nur eine Hashtable für Generics !?!


Gàbe es eine resourcenschonendere Möglichkeit, so eine Struktur intern
abzubilden, oder ist ein verschachteltes Dictionary schon der idealfall?




Also wenn das verschachtelte Array immer die gleiche Struktur hat (ein
Objekt ist) würde ich zu einer eigenen Klasse tendieren da hier eine
höhere Performance beim Zugriff auf die Felder im Objekt erreicht werden
kann.

Dictionary<int,myclass>

Die frage ist natürlich was wird mit den Daten gemacht viele Lese- oder
Schreibvorgànge oder auch beides.

Gruß
Thomas

Ähnliche fragen