教程中国
PHOTOSHOP CS9.0中文版 MAYA 8.5 FOR WINDOWS Corel Painter v9.0 Flash MX2004 中文版 Illustrator cs2 中文版
VC++6.0含sp6 中英文版 VB6.0 +sp6 简体中文版 Borland Delphi 7汉化版 MSDN for vb6.0中文版 Visual Studio 2005简体
教程中国下属 文件存储共享专家BIBIDU.COM 提供大型软件,教材,源码,电影,音乐,图书等下载 更多精品请点此进入
  您目前所在位置: 教程中国 >> .NET类 >> ASP.NET >> 访问Typed DataSet的性能比untyped Dataset高? RSS订阅
访问Typed DataSet的性能比untyped Dataset高?
教程(视频,书籍)下载:  ASP.NET AutoCAD 数据库 C# ASP java photoshop 网页设计 delphi 3dmax Flash C++ VB 张孝祥 实例   更多请进入BIBIDU搜索
IT搜索引擎   

在网上看到了不少这样评论,访问Typed DataSet数据的性能比untyped Dataset高。我一直表示怀疑,毕竟两者都是基于DataSet的实现;前者是代码编写时确定结构后者在运行期确定。按道理两者实例化后操作的效率是一致。

但从http://rottenapple.cnblogs.com/上的测试结果看到,就算用Index访问untyped Dataset 的DataRow字段值也比不上Typed DataSet快!难道还有什么比索引定位还快?于是我就看下Typed DataSet在访问成员值是如何定义的。

代码如下:

public int CategoryID

{

              get {

                   return ((int)(this[this.tableCategories.CategoryIDColumn]));

              }

              set {

                  this[this.tableCategories.CategoryIDColumn] = value;

              }

    }

原来DataRow除了提供Key和Index来定位成员外还提供了DataColumn定位的方法。为什么通过DataColumn来定位比Index要快呢?为了找到这个原因只能用反编译工作看下DataRow的代码了。

反编译看到以下代码终于就明白了。

public object this[int columnIndex]

{

     get

      {

        return [Table.Columns[columnIndex]];

      }

 

      set

      {

        [Table.Columns[columnIndex]] = value;

      }

}

无论你是通过Key还是Index定位,最终都是通过DataColumn来定位最终访问者。实际上Typed DataSet还是untyped Dataset访问效率应该都是一样的,只是访问方式不同导致效率上有差别。

开发人员可以通过写Typed DataSet重新包装来规定数据的访问方式,对于untyped Dataset就没有这么方便的,因为是运行期确定为了方便使用和维护很多时候只能用Key来访问。Typed DataSet虽然提高了访问效率(个人认为只是很微小的提升),但同时带来的就是Typed DataSet的维护工作。

如果真的要求效率为什么不直接用DataReader呢?而我自己偏向采用的方法是DataReader->Entity,以上纯属个人见解。

 

-------------------------------------------------

其次,世界上没有事情是绝对的,就编程这方面,代码执行速度,执行效率和开发效率、可读性维护性方面,往往没有“绝对追求速度”或者说“绝对易开发性”。

是凡接触过ADO.Net的人都知道,DataReader比DataSet速度快,DataSet比DataReader开发容易,功能强。但是并不是说,因为大家都希望自己程序快一点,所以就都用DataReader,因为我们要做的是在两者之间取得平衡而不是走极端——真要走极端,不要用.Net了,直接用汇编,速度肯定最快!

 



来源:upschool.com.cn
作者:
关键字:访问Typed,DataSet,Dataset高
发表日期:2006-4-16

网页显示有限 阅读全文请下载本文完整版WORD文档

上一篇:WebRequest 使用不当可能会造成线程阻塞   下一篇:DataReder填充对象集比DataAdapter.Fill效率要高?


本文的相类似文章
  • DataSet 添加数据集、行、列、主键和外键等操作示例
  • xmlHTTP xmlDOC 与 C#中DataSet的结合 实现AJAX简单示例
  • Object/DataSet Relational Mapping(对象/数据集关系映射1
  • Object/DataSet Relational Mapping(对象/数据集关系映射2
  • VS2005中使用强类型DataSet简化开发
  • 关于DataSet与Strongly typed DataSet几点思考
  • DataSet的加密解密
  • 将DataSet更新自动提交到数据库工具类实现
  • 访问Typed DataSet的性能比untyped Dataset高?
  • DataSet的几个基本操作
  • 网友评论 查看本文全部评论
    笔 名: *
    评 论:
    最多500字。当前字数:0
    联系方式:
    验证码:
    在学习中进步 在进步中成长 教程中国相随您的成长之路
    华腾联合科技股份有限公司版权所有
    广告联系:Rosibo@163.com