程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# DataSet性能最佳實踐

C# DataSet性能最佳實踐

編輯:C#入門知識

C# DataSet性能最佳實踐


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 FindRows() //查找所有數量小於0的分錄
{
    DataTable dt = ItemDataTable;
    ……
    return dt.Select(“Quantity<0”); //未使用並行計算
}
IEnumerable FindRows() //查找所有數量小於0的分錄
{
    DataTable dt = ItemDataTable;
    ……
    int index = dt.Columns.IndexOf(Quantity);
    return dt.AsEnumerable().AsParallel().Where(dr => (decimal)dr[index] < 0); //使用並行計算:
}

 

 

根據實驗,當對DataTable的行選擇時並行計算優於Select和循環過濾等方式;當進行行遍歷時性能類似。

 

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 ) ;      
  }
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved