C# DataSet性能最佳实践
2023-09-14 09:02:13 时间
在对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#问题——记一次线程运行突然停止
- c#中int16 int32 int64区别[通俗易懂]
- c#爬取Silverlight网页[通俗易懂]
- c# 多线程并发-金三银四面试:C#.NET面试题高级篇2-多线程
- 【地铁上的Redis与C#】数据类型(八)--List类型操作注意事项与常见业务场景
- 【愚公系列】2023年01月 .NET/C#知识点-EF Core性能优化之显示编译
- C#三层架构和MVC的区别详解架构师
- C#实现的三种方式实现模拟键盘按键详解编程语言
- c#通过操作mongodb gridfs实现文件的数据库存储详解编程语言
- 效控制C#中label输出文字的长度,自动换行
- C#中计算时间差中的小数问题解决
- C#ConfigHelper辅助类介绍
- C#泛型与非泛型性能比较的实例
- 深入C#中使用SqlDbType.Xml类型参数的使用详解
- 深入C#判断操作系统类型的总结详解
- c#利用Excel直接读取数据到DataGridView
- c#异步task示例分享(异步操作)
- C#把数字转换成大写金额的代码实例
- C#实现的中国移动官网手机号码采集器