Details zur C#-Leistungsoptimierung
1. Verwenden Sie ItemArray, um die Stapelzuweisung von DataRow zu implementieren
Beim Zuweisen von Werten zu allen Feldern von DataRow ist die Verwendung von Feldnamen für die spaltenweise Zuweisung ineffizient. Zu diesem Zeitpunkt sollte nach Möglichkeit die Stapelfeldzuweisung verwendet werden. Sie können die ItemArray- oder rows.Add-Methode verwenden:
/ ds是数据集(DataSet)对象 DataTable dt = ds.Tables[0]; DataRow row = dt.NewRow(); row.ItemArray = new object[] { value1, value2, …, valuen }; // ds是数据集(DataSet)对象 DataTable dt = ds.Tables[0]; dt.Rows.Add(value1, value2, …, valuen); //应避免做大量连续的单列赋值,如下: DataTable dt = ds.Tables[0]; DataRow row = dt.NewRow(); row["col1"] = value1; row["col2"] = value2; … row["coln"] = valuen;
2. Sinnvoller Einsatz der parallelen Berechnung von DataTable
Das integrierte Parallelrechnen von DataTable kann jede CPU des Computers voll ausnutzen, um die Effizienz zu optimieren.
IEnumerable<DataRow> FindRows() //查找所有数量小于0的分录 { DataTable dt = ItemDataTable; …… return dt.Select(“Quantity<0”); //未使用并行计算 } IEnumerable<DataRow> FindRows() //查找所有数量小于0的分录 { DataTable dt = ItemDataTable; …… int index = dt.Columns.IndexOf("Quantity"); return dt.AsEnumerable().AsParallel().Where(dr => (decimal)dr[index] < 0); //使用并行计算: }
Laut Experimenten, wann Die parallele Berechnung von DataTable ist besser als die Auswahl- und Schleifenfilterung bei der Auswahl von Zeilen. Die Leistung ist beim Durchlaufen von Zeilen ähnlich.
3. Verwenden Sie ImportRow, um Datentabellen mit derselben Struktur zusammenzuführen
Mit der Merge-Methode können DataTables problemlos zusammengeführt werden, die Effizienz von Merge ist jedoch sehr gering. Das Beispiel lautet wie folgt:
DataTable[] srcTables = ... ; foreach(DataTable src in srcTables ) { dest.Merge( src ) ; }
ImportRow kann auch die Zusammenführungsoperation von DataTable implementieren und seine Leistung ist viel höher als die von Merge. Das Codebeispiel lautet wie folgt:
DataTable[] srcTables = ... ; foreach(DataTable src in srcTables ) { foreach(DataRow row in src.Rows) { dest.ImportRow( row ) ; } }
Fortsetzung folgt
Das Obige ist der Inhalt der Best Practices für die C#-DataSet-Leistung. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (m.sbmmt.com)!