Laden...

Performancefrage: Direkt auf DataGrid.Rows zuzugreifen oder erst alles in eine Liste packen

Erstellt von mcneal vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.333 Views
Thema geschlossen
M
mcneal Themenstarter:in
56 Beiträge seit 2010
vor 13 Jahren
Performancefrage: Direkt auf DataGrid.Rows zuzugreifen oder erst alles in eine Liste packen

Hi,

folgendes:

Ich hab nen Datagridview, den ich Zeile für Zeile abarbeite.
Wenn ich die einzelnen Werte der Zellen abfragen möchte, was ist dann schneller?

Variante A:

direkter Zugriff auf die Zelle

work = row.Cells[1].Value.ToString();

Variante B:

alle Zellen einer Zeile in eine Liste packen und dann aus der Liste abrufen

cell = row.Cells[i].Value.ToString();
                            values.Add(cell);
                            rate = values[6];

ich vermute mal Variante A ist besser, vor allem da ich ja gar nicht jede Zelle benötige aber ich wollt zur Sicherheit mal nachfragen =)

3.511 Beiträge seit 2005
vor 13 Jahren

Beide Varianten sind schlecht. Iteriere durch die Datenquelle, und nicht durch das Control. Das Control dient nur rein zur Anzeige. Wenn du mit den Daten arbeiten willst, dann nimm immer die Datenquelle.

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

F
10.010 Beiträge seit 2004
vor 13 Jahren

Nein, der richtige Weg ist, niemals Werte in ein DGV zu frickeln.
Und weil man das nicht macht, sondern DataBinding benutzt ist es besser und schneller durch die benutzte Auflistung zu gehen.

1.378 Beiträge seit 2006
vor 13 Jahren

Da gibts nicht viel zu vermuten: Du machst bei Variante B exakt das Gleiche wie bei A nur das du zusätzlich die Werte vorher noch in eine Liste kopierst was natürlich zusätzlich Zeit in Anspruch nimmt.

lg XXX

M
mcneal Themenstarter:in
56 Beiträge seit 2010
vor 13 Jahren

nimm immer die Datenquelle.

Da geb ich dir ja recht aber das ist in meinem Fall leider nicht zu praktizieren

besser und schneller durch die benutzte Auflistung zu gehen.

vorher noch in eine Liste kopierst was natürlich zusätzlich Zeit in Anspruch nimmt.

hmm nun stehts 1:1 😁

1.378 Beiträge seit 2006
vor 13 Jahren

Mit

besser und schneller durch die benutzte Auflistung zu gehen.

wird wohl die Datenquelle gemeint sein, zu der du anscheinend keinen Zugang hast(warum auch immer).

Lg XXX

1.815 Beiträge seit 2005
vor 13 Jahren

Hallo!

Über DataGridView.Source hat man Zugriff auf die Datenquelle

Nobody is perfect. I'm sad, i'm not nobody 🙁

2.298 Beiträge seit 2010
vor 13 Jahren

Blöd nur, dass er hier wie es für mich aussieht manuell schreibt ohne eine Source anzugeben.

Somit bleibt hier nur FZelle's Rat zu befolgen.

@tom-essen

Du meinst doch eher DataGridView.DataSource richtig?

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

F
10.010 Beiträge seit 2004
vor 13 Jahren

@mcneal:

Da geb ich dir ja recht aber das ist in meinem Fall leider nicht zu praktizieren

Dann hast du aber viele Fehler im Vorfeld gemacht.
Wenn du Daten im DGV stehen hast solltest Du das schleunigst ändern, denn es ist immer der falsche weg.,

M
mcneal Themenstarter:in
56 Beiträge seit 2010
vor 13 Jahren

Also ich hab schon ne Source dahinter, auf die ich zugreife. Mit "nicht zu praktizieren" hab ich vll etwas übertrieben ^^

Habe es angepasst und greife auf die DataSource zu 😉

--> und nu? Bin ich jetzt schneller wenn ich die Zellen direkt anspreche oder alles in ne Liste packe und dann die Liste abfrage? 😁

5.742 Beiträge seit 2007
vor 13 Jahren

Bin ich jetzt schneller wenn ich die Zellen direkt anspreche oder alles in ne Liste packe und dann die Liste abfrage?

Hast du denn Performanceprobleme?
Wenn nein, warum machst du dir dann über solche Optimierungen im Millisekundenbereich Gedanken, wenn du mit sehr großer Wahrscheinlichkeit an einer anderen Stelle die Performance deiner Anwendung deutlich stärker erhöhen könntest?

Hänge mal einen Profiler dran - ich bin mir ziemlich sicher, dass der Unterschied kaum bis gar nicht messbar ist.
Daher: Nimm die einfachere Variante!

M
mcneal Themenstarter:in
56 Beiträge seit 2010
vor 13 Jahren

geht klar....hab jetzt auch keine performanceprobleme....war schon fast eher ne Interessefrage

Thema geschlossen