C# 效能最佳化細節
1、使用ItemArray實現對DataRow的批量賦值
在對DataRow的所有欄位賦值時,使用欄位名進行逐列賦值效率較低。這時應盡量使用批量欄位賦值。可以使用ItemArray或rows.Add方法:
/ 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、合理使用DataTable的並行計算
DataTable 內建的並行計算可以充分利用電腦的每個CPU,起到最佳化效率的作用。
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); //使用並行計算:}
3、使用ImportRow實現向同結構DataTable合并
使用Merge方法可以很方便的實現DataTable的合并,但Merge的效率卻非常差代碼;樣本如下:
DataTable[] srcTables = ... ;foreach(DataTable src in srcTables ){dest.Merge( src ) ;}
ImportRow也可以實現DataTable的合併作業,效能相比Merge要高很多。程式碼範例如下:
DataTable[] srcTables = ... ;foreach(DataTable src in srcTables ){ foreach(DataRow row in src.Rows) { dest.ImportRow( row ) ; }}
4、待續
以上就是C# DataSet效能最佳實務的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!