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、待续

C# DataSet性能最佳实践相关推荐

  1. java jpa性能_[Java Performance] 数据库性能最佳实践 - JPA和读写优化

    数据库性能最佳实践 当应用须要连接数据库时.那么应用的性能就可能收到数据库性能的影响. 比方当数据库的I/O能力存在限制,或者因缺失了索引而导致运行的SQL语句须要对整张表进行遍历.对于这些问题.只相 ...

  2. 持续集成最佳实践_集成服务性能最佳实践–数据流优化

    持续集成最佳实践 In this article, we'll present a couple of common best practices regarding the performance ...

  3. integration_Integration Services性能最佳实践–写目标

    integration With this article, we continue part 1 of common best practices to optimize the performan ...

  4. RocketMQ中高性能最佳实践-网易云课笔记

    RocketMQ中高性能最佳实践 最佳实践之Producer 降低服务器管理的复杂性和管理成本 最佳实践之Consumer 最佳实践之NameServer JVM与Linux内核配置 JVM配置 Li ...

  5. Mendix性能最佳实践

    目录 1. 简介 2. 计算属性的最佳实践[MXP001][MXP002] 2.1 在页面中避免使用计算属性[MXP001] 2.1.1 修复步骤 2.2 删除未使用的计算属性[MXP002] 2.2 ...

  6. 15年双11手淘 H5性能最佳实践

    2015年是全面『无线化』的一年,在BAT(财报)几家公司都已经超过50%的流量来自移动端,这次 双11 更是占到了68.67%无线交易 (天猫微博). 手淘中大量的业务采用H5的方式开发,H5体验好 ...

  7. 15年双11手淘前端技术巡演 - H5性能最佳实践(转载,好文)

    转载:原文链接 前言 2015年是全面『无线化』的一年,在BAT(财报)几家公司都已经超过50%的流量来自移动端,这次 双11 更是占到了68.67%无线交易 (天猫微博). 手淘中大量的业务采用H5 ...

  8. ASP.NET Core 性能优化最佳实践

    本文提供了 ASP.NET Core 的性能最佳实践指南. 译文原文地址:https://docs.microsoft.com/en-us/aspnet/core/performance/perfor ...

  9. DB2 Workload Management 工作负载管理最佳实践

    转自:http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0912db2workloadm/index.html 概要介 ...

最新文章

  1. 图像文字识别(二):java调用tesseract 识别图片文字
  2. kong 使用jwt RSA256证书
  3. android 软件盘弹回去的最好体验,Android 软键盘弹出 日常填坑
  4. 哈佛开源 | 从零开始教你计算机图形学
  5. 阿里巴巴牵手上汽集团:成立汽车科技公司
  6. 题库:queryset数据类型的特性
  7. python培训价目表-Python培训一般要多少钱?
  8. python seaborn_Python数据分析之Seaborn(回归分析绘图)
  9. j2me模拟器linux,J2ME HELLOWORLD 小试牛刀(转)
  10. 程序员高效率办公软件(推荐)。
  11. ubuntu14.04拒绝winscp的连接请求问题的解决笔记
  12. 汽车使用总结(七)--侧方停车
  13. 天梯L2-029 特立独行的幸福
  14. python 使用图形化界面tkinter显示图片 规定大小!
  15. Xcode调试中如何将指定地址转换为其指向的对象
  16. dnf剑魂buff等级上限_DNF95全新版本,剑魂之玩法攻略
  17. Mob研究院 |2019互联网医疗行业洞察
  18. 论文笔记 Semantics-Guided Neural Networks for Efficient Skeleton-Based Human Action Recognition - CVPR
  19. 什么是Spring的依赖注入?
  20. PS新建文档Ctrl+N

热门文章

  1. python如何选择命令_python 解析命令行选项
  2. 仓库中应用的计算机设备有哪些,智能仓储设备系统中有哪些常见的应用工具
  3. php 工厂模式 使用场景,PHP设计模式之工厂模式
  4. python telnet 交互_Python判断telnet通不通的实例
  5. python数字类型及运算_Python类型和运算--数字
  6. mysql fetch rows,php中mysql_fetch_array()和mysql_fetch_rows()函数区别
  7. java 日期函数转换_java 日期函数转换
  8. java项目逻辑重要吗_JAVA小项目,逻辑+感觉+总结?java小白你做到了吗(源码+教程)...
  9. django的ajax_cookie和session
  10. Docker默认网络管理