性能测试:如何提高绑定效率 模板列

发表于:2007-8-30 14:31

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:dongwei2345    来源:dongwei2345的专栏

分享:

  以前的开发中,我相信大部分人依然是使用DataBinder.Eval(Contanier.DataItem, 字段名)来进行数据绑定的
  到了.NET 2.0这条语句可以被简写成Eval("字段名").

  而实际运用中 DataBinder.Eval是通过反射来实现的,效率自然非常低下,既然如此,我们可以通过将Container,Dataitem转换成强类型来使用,这样就避免了反射,提高了效率.
(Type)Container.DataItem

  其实我们可以把Container.DataItem理解成数据集中的单个成员。
  你的数据集是DataSet 或DataTable 那么这个成员的类型就是DataRowView
  你的数据集是DataReader 那么这个成员类型就是DbDataReaderRecord
  你的数据集是List<Model>  成员类型就是Model

  将Container.DataItem转换后,就可以跟时候以上类型一样使用了,比如DataRowView["ID"]
  DbDataReaderRecord.GetInt32(0);
  Model.ID;

测试条件:
  控件:GridView
  字段:ID, NAME
  数目 50条
  循环次数 1000
  测试次数 3次
  模板列中使用Lable与TextBox
  数据源:DataSet
测试结果:
模板列(DataBinder.Eval)2.54, 2.56, 2.60 = 2.57
模板列((DataRowView["字段"]))2.16, 2.02, 2.09 = 2.09
模板列(Eval("字段"))2.51, 2.44, 2.48 = 2.48
可以看出,DataBinder.Eval与Eval的误差不大,大概4%
  而使用DataRowView["字段"] 则可以提高22%
如果还需要进一步提高效率的话可以使用DataRowView[列序号],这样可以避免低效的
DataRow字段匹配。不过牺牲了可读性
        
  关于使用强类型绑定的其他测试请参考其他文章
  以上测试比较粗略,存在误差,主要为说明问题。不足之处还请见谅
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号