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<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); //使用平行計算: }
- 根據實驗,當對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 ) ; } }
4、待續
相關文章
- JavaScript最佳實踐:效能JavaScript
- Canvas 最佳實踐(效能篇)Canvas
- 提高.NET效能的最佳實踐
- Golang效能最佳化實踐Golang
- 前端高效能動畫最佳實踐前端動畫
- SAP ABAP 效能最佳化實踐
- 選擇結構還是類?C#中的最佳實踐與效能最佳化指南C#
- HBase最佳實踐-讀效能優化策略優化
- MySQL8.0效能最佳化(實踐)MySql
- 10個Spring Boot效能最佳實踐Spring Boot
- HarmonyOS:應用效能最佳化實踐
- ASP.NET Core 效能優化最佳實踐ASP.NET優化
- Taro | 高效能小程式的最佳實踐
- Taro:高效能小程式的最佳實踐
- 毫秒必爭,前端網頁效能最佳實踐前端網頁
- 前端效能最佳化實踐方向與方法前端
- TiDB 效能分析&效能調優&最佳化實踐大全TiDB
- ELK 效能(4) — 大規模 Elasticsearch 叢集效能的最佳實踐Elasticsearch
- Android最佳效能實踐(3):高效能編碼優化Android優化
- [01] C#網路程式設計的最佳實踐C#程式設計
- 17 個提高效能的 Flutter 最佳實踐Flutter
- 2022 前端效能優化最佳實踐前端優化
- Hadoop YARN:排程效能最佳化實踐HadoopYarn
- 達達快送小程式效能最佳化實踐
- 效能診斷利器JProfiler快速入門和最佳實踐
- 阿里雲 VPC 內網效能測試最佳實踐阿里內網
- Redis大叢集擴容效能最佳化實踐Redis
- 編寫高效能 Java 程式碼的最佳實踐Java
- Android最佳效能實踐(1):合理管理記憶體Android記憶體
- Android最佳效能實踐(4):佈局優化技巧Android優化
- 14個Flink SQL效能最佳化實踐分享SQL
- 基於Ascend C的FlashAttention運算元效能最佳化最佳實踐
- Pika最佳實踐
- Flutter 最佳實踐Flutter
- MongoDB 最佳實踐MongoDB
- 《.NET最佳實踐》
- Django 最佳實踐Django
- metaq最佳實踐