C# DataSet性能最佳实践

简介: C# 性能优化细节1、使用ItemArray实现对DataRow的批量赋值在对DataRow的所有字段赋值时,使用字段名进行逐列赋值效率较低。这时应尽量使用批量字段赋值。可以使用ItemArray或rows.Add方法:/ ds是数据集(DataSet)对象DataTable dt = ds.Tables[0];DataRow row = dt.NewRow();row.Item

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); //使用并行计算:
    }

  • 根据实验,当对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、待续



目录
相关文章
|
29天前
|
机器学习/深度学习 人工智能 开发者
机器学习PAI常见问题之eval加速如何解决
PAI(平台为智能,Platform for Artificial Intelligence)是阿里云提供的一个全面的人工智能开发平台,旨在为开发者提供机器学习、深度学习等人工智能技术的模型训练、优化和部署服务。以下是PAI平台使用中的一些常见问题及其答案汇总,帮助用户解决在使用过程中遇到的问题。
|
8天前
|
机器学习/深度学习 并行计算 数据挖掘
NumPy性能优化技巧系列:打造高效数据处理流程
【4月更文挑战第17天】本文介绍了优化Python中NumPy性能的五大技巧:1) 使用内置函数代替循环;2) 避免不必要的数据复制,利用`inplace`和视图;3) 选择合适的数据类型以减少内存占用;4) 优化数组形状和内存布局,保持连续性;5) 利用并行计算库如`numba`加速计算。这些技巧能提升数据处理效率,降低资源消耗,适应大规模数据处理需求。
|
1月前
|
算法 数据处理 异构计算
CatBoost高级教程:分布式训练与大规模数据处理
CatBoost高级教程:分布式训练与大规模数据处理【2月更文挑战第15天】
241 14
|
8月前
|
安全 Anolis
性能优化特性之:E0PD
本文介绍了倚天实例上进行安全特性关闭以提升性能的特性:E0PD,并且从优化原理、使用方法、性能收益等方面做了详细阐述。
|
9月前
|
分布式计算 并行计算 大数据
并行计算框架Polars、Dask的数据处理性能对比
在Pandas 2.0发布以后,我们发布过一些评测的文章,这次我们看看,除了Pandas以外,常用的两个都是为了大数据处理的并行数据框架的对比测试。
265 0
|
SQL 分布式计算 大数据
Dataset 介绍_ Dataset 底层类型 | 学习笔记
快速学习 Dataset 介绍_ Dataset 底层类型
138 0
Dataset 介绍_ Dataset 底层类型 | 学习笔记
|
存储 SQL 关系型数据库
最佳实践—如何优化Batch Insert
Batch Insert语句是常见的数据库写入数据的方式,PolarDB-X兼容MySQL协议和语法,Batch Insert语法为:
136 0
最佳实践—如何优化Batch Insert
|
SQL 数据可视化 数据挖掘
Pandas+ SLS SQL:融合灵活性和高性能的数据透视
Pandas是一个十分强大的python数据分析工具,也是各种数据建模的标准工具。Pandas擅长处理数字型数据和时间序列数据。Pandas的第一大优势在于,封装了一些复杂的代码实现过程,只需要调用接口就行了,避免了编写大量的代码。Pandas的第二大优势在于灵活性,可以实现自动化批量化处理复杂的逻辑,这些工作是Excel等工具是无法完成的。因而Pandas介于Excel和自主编写程序之间,兼具灵活性和简洁性的数据分析工具。
453 0
ML之FE:基于load_mock_customer数据集(模拟客户,单个DataFrame)利用featuretools工具实现自动特征生成/特征衍生
ML之FE:基于load_mock_customer数据集(模拟客户,单个DataFrame)利用featuretools工具实现自动特征生成/特征衍生
ML之FE:基于load_mock_customer数据集(模拟客户,单个DataFrame)利用featuretools工具实现自动特征生成/特征衍生