注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

回忆之旅

我很向往山村的农庄生活,他们的热情,让我无法抗拒! 51EOO.COM

 
 
 

日志

 
 

DataList Execute Efficiency  

2009-08-07 15:15:25|  分类: 技术分享 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

二,执行效率

    从“一”讲述的低层实现。我们很容易来排序下面数据绑定表达式的执行效率

<%#Container.DataItem%>

<%#GetDataItem()%>

<%#Eval("字段名")%>

<%#DataBinder.Eval(Container.DataItem,"字段名")%>

<%#((DataRowView)Container.DataItem)["字段名"] %>

<%#((Type)Container.DataItem).成员 %>

<%#((Type)GetDataItem()).成员 %>

    1,效率最高应该是:

<%#((Type)Container.DataItem).成员 %>

<%#Container.DataItem%>

<%#((DataRowView)Container.DataItem)["字段名"] %>

    2,效率排第二的是:

<%#((Type)GetDataItem()).成员 %>

<%#GetDataItem()%>

    3,效率最低的是:

<%#Eval("字段名")%>

<%#DataBinder.Eval(Container.DataItem,"字段名")%>

    其实按上面的排序有失公允,原因是这七种数据表达绑定形式运用的场合不是完全相同的。

    使用场合大概如下:

    1,

|<%#Eval("字段名")%>

<%#DataBinder.Eval(Container.DataItem,"字段名")%>

    它们的使用场合最广,数据源可以为与数据库有关的DataSet,DataTable,DataView.也可以为普通集合(例如:数组,ArrayList,HashTable等)和泛行集合(例如:List<T>,Dictionary<Tkey,Tvalue>等)。

    注:它们2个永远可以相互替换,至少目前是这样,凡是可以用Eval方法的地方,就可以用DataBinder.Eval方法替换。从低层实现上,Eval比DataBinder.Eval方法效率稍低,原因是Eval方法对了调用GetDataItem()方法这一步。但最终都是通过DataBinder.Eval方法利用反射技术根据名称查找属性,从而计算出表达式的值,所以非常影响性能。

    2,

    <%#((DataRowView)Container.DataItem)["字段名"] %>

    它只能使用在数据源为与数据库有关的Dataset,DatTable,DataView.这些数据源都实现了IListSource接口。其实从低层实现本质上来看,它和<%#((Type)Container.DataItem)。成员 %>类似。

    3,

<%#Container.DataItem%>

<%#GetDataItem()%>

<%#((Type)Container.DataItem).成员 %>

<%#((Type)GetDataItem()).成员 %>

    这几种形式估计大家最不常用。它们一般只使用与普通集合(例如:数组,ArrayList,HashTable)和泛行集合(例如:List<T>,Dictionary<Tkey,Tvalue>)。其实本质上就是实现了IList,ICollection,IEnumerable,IDictionary等以及这些接口对应的泛行接口的集合。IList接口和IDictionary接口的区别是,一个只有值,而另一个是键/值对,对应泛行形式也是这样。而Array就对用List<T>,而HashTable就对应Dictionary<Tkey,Tvalue>.



DataList Execute Efficiency - Tony - 回忆之旅
  评论这张
 
阅读(70)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017