Performance und Speicher

02/10/2008 - 07:59 von andi rickenbach | Report spam
Hallo,

ich arbeite mit vb.net 2005 und habe eine Frage bezüglich Performance und
Speicherauslastung.

Wenn ich Daten aus einer Datenbank lese und diese in meinem Program
weiterverwenden will, würde mich interessieren was von der Geschwindigkeit
und von der Speicherauslastung her besser ist.

1. Alle Daten einer Tabelle mit einem DataReader aus der Datenbank holen und
zum Beispiel in eine List of(myItems) speichern.

2. Alle Daten bzw. ganze Tabelle in ein Dataset bzw. eine Datatable laden
und von dort her weiterverwenden.

Ich gehe mal davon aus, das wenn ich mit beiden Varianten eine komplette
Tabelle auslese, wird sich der Memoryverbrauch nicht gross unterscheiden. Ist
das Richtig?
Wenn ja, was geht schneller?

Danke für einige Tipps.
 

Lesen sie die antworten

#1 Peter Götz
02/10/2008 - 09:34 | Warnen spam
Hallo Andi,

Wenn ich Daten aus einer Datenbank lese und diese
in meinem Program weiterverwenden will, würde mich
interessieren was von der Geschwindigkeit
und von der Speicherauslastung her besser ist.

1. Alle Daten einer Tabelle mit einem DataReader aus
der Datenbank holen und zum Beispiel in eine
List of(myItems) speichern.

2. Alle Daten bzw. ganze Tabelle in ein Dataset bzw.
eine Datatable laden und von dort her weiterverwenden.



Um Deine Frage beantworten zu können, müsste man
wissen, wie konkret Deine "Weiterverarbeitung" der
DB-Daten beim jeweiligen Client aussieht.

List(Of ...) und DataTable bieten unterschiedliche
Funktionaliàten und sollten eben passend zur
jeweiligen Aufgabenstellung verwendet werden.

Als reiner Zwischenspeicher für Daten ist eine List(Of...)
sicher ganz gut geeignet. Sollen aber bestimmte
Sortierungen, Filter oder Verknüpfungen zwischen
Daten aus verschiedenen Tabellen möglich sein,
eignen sich DataTables, evtl. verpackt in einem
DataSet sicher besser.

Ich gehe mal davon aus, das wenn ich mit beiden
Varianten eine komplette Tabelle auslese, wird
sich der Memoryverbrauch nicht gross unterscheiden.
Ist das Richtig?



Der Speicherverbrauch ist bei modernen Rechnern
und den heute üblichen Speichergrössen nicht das
oberste Kriterium, wenn man dazu auch noch die
Select-Statements zum Lesen der Daten mit sinn-
vollen Where-Klauseln versieht und so die Daten-
mangen auf ein jeweils sinnvolles Mass begrenzt.


Wenn ja, was geht schneller?



Auch hier muss man die Frage stellen, worauf Du
dieses "schneller" beziehst. Geht es nur darum
einen bestimmten Datensatz aus der Gesamtmenge
herauszufischen, ist eine List(Of ...) evtl. von Vorteil, geht
es dagegen um Interaktion zwischen den lokalen
Daten und der Datenbank (Lesen und Schreiben von
DB-Daten), geht es um Verknüpfungen zwischen
verschiedenen Tabelleninhalten, um Sortierungen,
Filter usw., sind DataTables und je nach Bedarf
zugehörige DataSets aufgabengerechter.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen