Ich möchte nur hinzufügen, dass der Kontext, wie viele Datensätze Sie erwarten eine große Rolle spielt, weil, wenn Sie eine einzelne Zeile dann Performance-Unterschied zwischen diesen beiden Rückkehr nicht signifikant wäre. Wenn Sie jedoch viele Zeilen durchlaufen, ist die Verwendung von typisierten Accessoren für die Leistung besser, da sie optimiert ist. Wenn Sie also in diesem Fall die beste Leistung erzielen möchten, indem Sie einen Spaltennamen verwenden, rufen Sie GetOrdinal einmal auf, geben Sie es in eine Variable ein und verwenden Sie dann den typisierten Accessor mit der Ordnungszahl der Spalte in Ihrer Schleife. Dies würde die beste Leistung erbringen.
, wenn Sie neugierig auf die Performance-Unterschied sind Besuche my blog post
Hat jemand eine Idee über die Auswirkungen auf die Leistung haben GetOrdinal der Verwendung von (..) innerhalb Reihe Schleife im Vergleich zu beispielsweise dem tatsächlichen Datenabruf von DB? –
Ich habe einen performamce-Test für einen Web-API-Dienst, der etwa 30-40 Datensätze aus DB Stored Proc (mit mehreren Resultsets) liest und Json von ca. 8K Größe zurückgibt. In diesem Test habe ich alle GetOrdinal() durch statische Int-Konstanten ersetzt und als Ergebnis habe ich eine 2% ige Steigerung der Performance erreicht. Es lohnt sich also, einen solchen Cache für Spaltennamen zu erstellen. - Ich denke in den meisten Szenarien nicht. Lesen von Daten aus DB und Daten-Serialisierung zu Json in realen Szenarien beeinflussen die Leistung mehr, so denke ich Caching von Ordnungszahlen wird die letzte Sache zu tun, wenn Sie bereits alles andere optimiert ... –