Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Füllen eines DataGrids performancemäßig optimieren
Toem99
myCSharp.de - Member



Dabei seit:
Beiträge: 511

Themenstarter:

Füllen eines DataGrids performancemäßig optimieren

beantworten | zitieren | melden

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 ....
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

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.
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 849
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
KroaX
myCSharp.de - Member

Avatar #avatar-4080.jpg


Dabei seit:
Beiträge: 301
Herkunft: Köln

beantworten | zitieren | melden

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.ä.
private Nachricht | Beiträge des Benutzers
chrismoe
myCSharp.de - Member



Dabei seit:
Beiträge: 52

beantworten | zitieren | melden

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).
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

aber bitte messe nciht mit datetime sondern mit StopWatch.
chrismoe
myCSharp.de - Member



Dabei seit:
Beiträge: 52

beantworten | zitieren | melden

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?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von chrismoe am .
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

Zitat
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.
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5.299

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers