C# DataSet性能最佳实践

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

时间: 2024-11-05 12:10:17

C# DataSet性能最佳实践的相关文章

DB2 9 中 15 个 pureXML 性能最佳实践

原文http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0610nicola/   DB2 9 中 15 个 pureXML 性能最佳实践 Matthias Nicola (mnicola@us.ibm.com), DB2/XML Performance, IBM Silicon Valley Laboratory 简介: DB2 9 引入了 pureXML 支持,这意味着 XML 数据将以其固有的层次格式被存储和查

如何保证高质量的—移动APP的性能最佳实践

加速之必要 不考虑技术,有一件事是肯定的--人们似乎总是希望可以更快.根据各种各样的研究,现在用户只愿意等待一个web应用程序加载三秒或更短的时间,超过的话,他们就会变得越来越不耐烦或者干脆换一个应用程序.这些高期待不断被压到移动web之上:现在还压到移动App上.就像Web,现今的移动移动app都有它们自己的性能问题并需要做出一些微调.最新研究表明,过去,在手机上获取app时,47%的移动用户主要是抱怨速度慢且反应迟钝.App在苹果的app商店上被谴责"慢得可怕".对于Faceboo

ASP.NET性能最佳实践

asp.net|性能 根据MSDN webcast 整理 逻辑/物理设计实践推荐 : 使用逻辑三层模型 页面(.aspx)和用户控件(.ascs) 可重用类型(组件)放在\bin目录下 数据放在SQL数据库中 推荐 : 为Web Farm设计 不要假定访问者永远会回到同一服务器 注意静态变量和应用状态 Web Farm会话状态 推荐 : 用同一个进程 应避免(可能时): 对XML Web服务的同步调用 通过DCOM的远程调用 使用XML Web 服务 : 因特网上应用之间的通讯 不要用于应用内通

DB2 9中15个pureXML性能最佳实践

DB2 9引入了pureXML支持,这意味着XML数据将以其固有的层次格式被存储和查询.为了查询 XML数据,DB2 提供了两种语言,SQL/XML和XQuery.此外,DB2 9 还具有成熟的XML 索引功能和对 XML 模式验证的支持.虽然大多数已有的关于DB2性能的指南同样适用于XML数据,但是本文还将提供其他一些特定于XML的性能方面的提示. 简介 DB2 9中的pureXML支持为管理XML数据提供了有效的.多方面的功能.对于很多XML应用程序而言,性能是高度优先考虑的一个方面.DBA

jquery提升性能最佳实践小结_jquery

将jquery对象缓存起来在 for循环中,不要每次都要访问数组的length属性,我们应该先将对象缓存进一个变量然后再操作,如下所示: 复制代码 代码如下: var myLength = myArray.length; for (var i = 0; i < myLength; i++) { // 要做的事 } 在循环外使用append 进行DOM操作是有代价的,如果需要往DOM中添加大量元素,你应该一次批量完成,而不是一次一个. 复制代码 代码如下: // 别这样 $.each(really

关于jquery性能最佳实践的讨论,与求教_jquery

原因是我在测试的时候:带入了错误的变量.具体可以查看图片上的 $(parentID > childClass) 我直接比较两个字符换大小了! 感谢 html5中文网 QQ群中的 "不见丘比特". 其中第三点提到父元素与子元素的关系中提到了 从父元素选择子元素的用例: 复制代码 代码如下: $('.child', $parent) $parent.find('.child') $parent.children('.child') $('#parent > .child') $

C# 性能优化最佳实践

1.显式注册的EvenHandler要显式注销以避免内存泄漏 将一个成员方法注册到某个对象的事件会造成后者持有前者的引用.在事件注销之前,前者不会被垃圾回收. private void Form1_Load() { -- //注册事件 CommandRemotingContext.CmdChanged += new ReciverCmdStateChangedEventHandler(this.CommandRemotingContext_CmdChanged); -- } private vo

针对基础设计、性能和可管理性的DB2最佳实践

在过去几年中,产生了很多著作论述关于 DB2 设计和实现的最佳实践,包括大量图书和文章.这些著作深入探讨了如何设计 DB2 并将其集成到应用程序中.为了提供一些基本指导以让客户和业务合作伙伴了解这些内容,本文汇编了在使用 IBM DB2 技术设计和实现应用程序时需要考虑的一系列最佳实践.本文的目标是获得更加有效和高效的 DB2 实现.本文不会为现有 DB2 客户和独立软件开发商(ISV)提供详细的性能最佳实践. 简介 DB2 for Linux, UNIX, and Windows 提供了一个数

性能、稳定性、反压、Exactly Once,Jstorm开源最佳实践全解析

在2017年在线技术峰会--阿里开源项目最佳实践上,来自阿里巴巴中间件的技术专家卫乐分享了Jstorm开源最佳实践.他主要介绍了Jstorm的架构,从性能.稳定性.监控系统.大规模部署.反压.灰度发布&热升级.Exactly-Once.新的窗口机制等方面详细扥想了Jstorm做的优化.以下内容根据直播视频整理而成. 关于阿里中间件,欢迎访问官网了解更多:https://www.aliyun.com/aliware 视频回顾:点击进入 Pdf下载:点击进入   发展历史   JStorm从2013