C# DataSet性能最佳实践
2023-09-14 09:02:10 时间
在对DataRow的所有字段赋值时,使用字段名进行逐列赋值效率较低。这时应尽量使用批量字段赋值。可以使用ItemArray或rows.Add方法:/ ds是数据集(DataSet)对象
DataTable dt = ds.Tables[0];
DataRow row = dt.NewRow();
row.Item
使用Merge方法可以很方便的实现DataTable的合并,但Merge的效率却非常差代码;示例如下:
ImportRow也可以实现DataTable的合并操作,性能相比Merge要高很多。代码示例如下:
【Paper Reading】PolarDB计算存储分离架构性能优化之路 本篇论文收录在 VLDB 2022,介绍了云原生数据库PolarDB在计算存储分离架构下遇到的性能挑战,分析了云存储相对于传统本地存储的工作特性差异及其根因,讨论了将各类存储引擎部署至云存储上时所会遇到的问题挑战,并提出了统一的优化框架 CloudJump。最后通过实验证明优化框架CloudJump适用于PolarDB,也适用于 RocksDB。
Pandas+ SLS SQL:融合灵活性和高性能的数据透视 Pandas是一个十分强大的python数据分析工具,也是各种数据建模的标准工具。Pandas擅长处理数字型数据和时间序列数据。Pandas的第一大优势在于,封装了一些复杂的代码实现过程,只需要调用接口就行了,避免了编写大量的代码。Pandas的第二大优势在于灵活性,可以实现自动化批量化处理复杂的逻辑,这些工作是Excel等工具是无法完成的。因而Pandas介于Excel和自主编写程序之间,兼具灵活性和简洁性的数据分析工具。
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 //未使用并行计算 IEnumerable DataRow FindRows() //查找所有数量小于0的分录 DataTable dt = ItemDataTable; int index = dt.Columns.IndexOf("Quantity"); return dt.AsEnumerable().AsParallel().Where(dr = (decimal)dr[index] //使用并行计算: }根据实验,当对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 ) ; }
【Paper Reading】PolarDB计算存储分离架构性能优化之路 本篇论文收录在 VLDB 2022,介绍了云原生数据库PolarDB在计算存储分离架构下遇到的性能挑战,分析了云存储相对于传统本地存储的工作特性差异及其根因,讨论了将各类存储引擎部署至云存储上时所会遇到的问题挑战,并提出了统一的优化框架 CloudJump。最后通过实验证明优化框架CloudJump适用于PolarDB,也适用于 RocksDB。
Pandas+ SLS SQL:融合灵活性和高性能的数据透视 Pandas是一个十分强大的python数据分析工具,也是各种数据建模的标准工具。Pandas擅长处理数字型数据和时间序列数据。Pandas的第一大优势在于,封装了一些复杂的代码实现过程,只需要调用接口就行了,避免了编写大量的代码。Pandas的第二大优势在于灵活性,可以实现自动化批量化处理复杂的逻辑,这些工作是Excel等工具是无法完成的。因而Pandas介于Excel和自主编写程序之间,兼具灵活性和简洁性的数据分析工具。
相关文章
- C#中控件的CheckState和Checked属性区别?
- C# Quartz.NET实现动态改变作业调度周期
- C#项目代码规范
- 重学c#系列——元组的自我见解 [三十一]
- 重学c#系列——什么是性能[外篇性能篇一]
- C# 引用类型、值类型
- C# ToString()格式化时间,常用模式
- 【转载】C#堆和栈的区别
- C# 判断远程文件是否存在
- C# 性能优化最佳实践
- Atitit 项目语言的选择 java c#.net php??
- Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net
- Atitit.提升软件Web应用程序 app性能的方法原理 h5 js java c# php python android .net
- Atitit.获取approot api 应用根路径 java c#.net php asp
- Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle
- 编程语言C#基础入门精华大总结
- C#与C++混合编程及性能分析
- C# 程序性能提升篇-2、类型(字段类型、class和struct)的错误定义所影响性能浅析
- C# 程序性能提升篇-1、装箱和拆箱,枚举的ToString浅析
- (36)C#使用引用(ref)来提高程序的性能
- 语法糖----C#的async和await
- C# WebApi的controller中如何存取session