Laden...

Füllen eines DataGrids performancemäßig optimieren

Erstellt von Toem99 vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.254 Views
T
Toem99 Themenstarter:in
511 Beiträge seit 2008
vor 14 Jahren
Füllen eines DataGrids performancemäßig optimieren

Hallo,

wir setzen ein DataTable ein, welches zur Laufzeit aus einem JSon String gefüllt wird.

  • lese Zeile aus Json
  • lege Zeile an
  • schreibe Zeile
  • usw.

Bei ca. 4000 DS dauert dies ca. 7 Sekunden.

Wie kann ich das am besten optimieren?

Nicht für das Leben, für die Arbeit lernen wir ...
Windows ist Klasse, ich nehme es um Linux zu downloaden ....

Gelöschter Account
vor 14 Jahren

beim anlegen der zeile kann man die werte der zelle gleich mitgeben (sofern ich mich noch richtig erinnere). das dürfte die ganze sache unter umständen beschleunigen. viel verbesserungspotenziol sehe ich allerdings nciht gerade.

849 Beiträge seit 2006
vor 14 Jahren

Hallo Toem99

Performanceoptimierungen ohne den Code zu sehen, sind recht schwierig. Vllt ist es auch nicht so günstig eine DataTable zu benutzen.. Kommt natürlich darauf an, was Du nachher noch mit den Daten machst.

Beim Strings bearbeiten kann man meist auch noch einiges herausholen, wenn man weiß wie.

Grüße

301 Beiträge seit 2009
vor 14 Jahren

Die Frage kam auch grad in mir hoch :

Braucht man wirklich 4000 Datensätze auf einmal in einem Grid ? Möglicherweise gibt es an anderer Stelle noch Optimierungsansätze , z.B. Paging o.ä.

C
52 Beiträge seit 2010
vor 14 Jahren

Ich würde einfach mal testen, wie lange die einzelnen Steps dauern (Im Schnitt)


DateTime readLineStart = DateTime.Now;
- lese Zeile aus Json
DateTime readLineEnd = DateTime.Now;

//usw...

- lege Zeile an


- schreibe Zeile

Dann siehst du, wo der Bottleneck ist. Ich vermute stark beim Einlesen der Daten. 4000 Zeilen in ein DataTable zu adden sollten recht fix gehen (Flass du da keine Blobs oder sonstige großen Datenmengen reinschreibst).

Gelöschter Account
vor 14 Jahren

aber bitte messe nciht mit datetime sondern mit StopWatch.

C
52 Beiträge seit 2010
vor 14 Jahren

Oh, wieder was gelernt. Scheint eine höhere Edit -> Resolution zu haben. Laut MSDN hat DateTime ca. 16ms. Wie hoch ist denn die von StopWatch?

Gelöschter Account
vor 14 Jahren

Oh, wieder was gelernt. Scheint eine höhere Edit -> Resolution zu haben. Laut MSDN hat DateTime ca. 16ms. Wie hoch ist denn die von StopWatch?

das kommt ganz daruf an, was die hardware und das OS so bietet. im optimalfall verwendet es intern den performancecounter ansonsten weicht es auf den system timer aus.

wie ungefähr genau er ist, kann man mit den propertys Frequency und IsHighResolution herausfinden.

5.299 Beiträge seit 2008
vor 14 Jahren

Du kannst die Datenbindung unterbrechen (abstöpseln), die DataTable befüllen und dann wieder anstöpseln.
Was auch sehr langsam ist, ist, wenn eine DGV-Spalte auf AutoSizeMode.AllCells steht.

Der frühe Apfel fängt den Wurm.