ASP.NET 数据绑定常用代码及其性能分析

用DataBinder.eval 绑定不必关心数据来源(Dataread或dataset)。不必关心数据的类型eval会把这个数据对象转换为一个字符串。在底层绑定做了很多工作,使用了反射性能。正因为使用方便了,但却影响了数据性能。当于dataset绑定时,DataItem其实式一个DataRowView(如果绑定的是一个数据读取器(dataread)它就是一个IdataRecord。)因此直接转换成DataRowView的话,将会给性能带来很大提升。

  DataBinder.Eval是这样:DataBinder是System.Web里面的一个静态类,它提供了Eval方法用于简化数据绑定表达式的编写,但是它使用的方式是通过Reflection等开销比较大的方法来达到易用性,因此其性能并不是最好的。而Container则根本不是任何一个静态的对象或方法,它是ASP.NET页面编译器在数据绑定事件处理程序内部声明的局部变量,其类型是可以进行数据绑定的控件的数据容器类型(如在Repeater内部的数据绑定容器叫RepeaterItem),在这些容器类中基本都有DataItem属性,因此你可以写Container.DataItem,这个属性返回的是你正在被绑定的数据源中的那个数据项。如果你的数据源是DataTable,则这个数据项的类型实际是DataRowView。

使用时注意:

  1.注意字段名的大小写(要特别注意)。如果和查询的不一致,在某些情况下会导致比<%# DataBinder.eval_r(Container.DataItem, "字段名") %>还要慢。

  2.如果想进一步提高速度,可采用<%# ((System.Data.DataRowView)Container.DataItem)[0] %>的方法。不过其可读性不高。

//正常情况(C#)

<%# ((System.Data.DataRowView)Container.DataItem)["Title"] %>

//绑定日期字段格式字符串

<%# Convert.ToDateTime(((System.Data.DataRowView)Container.DataItem)["FbTime"]).ToString("yyyy年MM月dd日") %>

<%# DataBinder.eval_r(Container, "DataItem.FbTime","{0:yyyy年MM月dd日}") %>

//字符串绑定超过指定长度截断

<%# DataBinder.eval_r(Container.DataItem, "Text").ToString().Trim().Length>7?DataBinder.eval_r(Container.DataItem,"Text").ToString().Trim().Substring(0,7):DataBinder.eval_r(Container.DataItem,"Text").ToString().Trim() %>

//价格格试化为2位小数

<%# Convert.ToDecimal(((System.Data.DataRowView)Container.DataItem) ["Price"]).ToString("F2") %>

<%# DataBinder.eval_r(Container, "DataItem.Price","{0:F2}") %>

时间: 2024-10-10 16:21:32

ASP.NET 数据绑定常用代码及其性能分析的相关文章

[Swift通天遁地]七、数据与安全-(15)使用单元测试进行代码的性能分析

单元测试提供了一个测试性能的方法,可以用来对应用程序的执行性能进行检测. 本文将演示使用单元测试进行代码的性能分析: 两种不同的图片加载方式的性能差异,在[Assets.xcassets]中导入图片素材. 如果项目中没有引用单元格测试框架, 项目导航区点击选中项目名称,再点击中间列的[+]图标进行添加. 在弹出的模板窗口中,选择单元测试框架模板[iOS Unit Testing Bundle] ->[Next]->保持默认的选项设置->[Finish] 打开单元测试用例文件[UnitTe

ASP.NET中常用的优化性能的方法

1. 数据库访问性能优化  数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响.系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求. 连接池的大小是有限的,如果在连接池达到最大限度后仍要求创建连接,必然大大影响性能.因此,在建立数据库连接后只有在真正需要操作时才打开连接,使用完

九种常用排序的性能分析总结

转自:http://blog.csdn.net/cjf_iceking/article/details/7953637 间间断断的将9种排序实现,并且将其以博客笔记的形式记录下来:现在就该来综合的分析这九种排序,让我们先来看看其算法复杂度和稳定性的分析结果: 算法复杂度以及稳定性分析 算法名称 平均时间 辅助空间 稳定性 冒泡排序 O(n2) O(1) 是 选择排序 O(n2) O(1) 否 插入排序 O(n2) O(1) 是 自底向上归并排序 O(nlog2n) O(n) 是 自顶向下归并排序

[转]九种常用排序的性能分析总结

间间断断的将9种排序实现,并且将其以博客笔记的形式记录下来:现在就该来综合的分析这九种排序,让我们先来看看其算法复杂度和稳定性的分析结果: 算法复杂度以及稳定性分析 算法名称 平均时间 辅助空间 稳定性 冒泡排序 O(n2) O(1) 是 选择排序 O(n2) O(1) 否 插入排序 O(n2) O(1) 是 自底向上归并排序 O(nlog2n) O(n) 是 自顶向下归并排序 O(nlog2n) O(n) 是 快速排序 O(nlog2n) O(n) 否 堆排序 O(nlog2n) O(1) 否

Android 常用的性能分析工具详解:GPU呈现模式, TraceView, Systrace, HirearchyViewer(转)

此篇将重点介绍几种常用的Android性能分析工具: 一.Logcat 日志 选取Tag=ActivityManager,可以粗略地知道界面Displaying的时间消耗.当我们打开一个Activity的时候,log会打印一串log如下: I/ActivityManager﹕ Displayed xxx.xxx.xxx/TestActivity: +1s272ms (total +3s843ms) 第一个时间表示系统接受到打开的intent到TestActivity界面显示出来的时间1.272秒

ASP.NET中常用的26个优化性能方法

1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多 次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET 中提供了 连接池(Connection Pool)改善打开和关闭数据库对性能的影响.系统将用户的 数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请 求.连接池的大小是有限的,如果在连接池达到最大限度后仍要求创建连接,必 然大大影响性能.因此,在建立数据库连接后只有在真正需要操作时才打开连接

ASP.NET中常用的26个优化性能方法(转)

1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响.系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求.连接池的大小是有限的,如果在连接池达到最大限度后仍要求创建连接,必然大大影响性能.因此,在建立数据库连接后只有在真正需要操作时才打开连接,使用完毕后

Visual Studio代码性能分析工具

AMD CodeXL 2011年发布的AMD CodeAnalyst Performance Analyzer 现在已经被AMD CodeXL所替代.AMD CodeXL的主要目的是帮助开发者更好利用CPU, GPU和APU的计算性能,具有强大的GPU调试.CPU和GPU代码分析.及静态的OpenCL内核性能分析等能力. AMD提供了支持Windows 7.Windows 8和Linux系统的单机版CodeXL分析工具.在Visual Studio 2010,2012和2013上也有AMD Co

11个Visual Studio代码性能分析工具

软件开发中的性能优化对程序员来说是一个非常重要的问题.一个小问题可能成为一个大的系统的瓶颈.但是对于程序员来说,通过自身去优化代码是十分困难的.幸运的是,有一些非常棒的工具可以帮助程序员进行代码分析和性能测试,从而大大简化程序员进行代码性能优化的过程.MSDN杂志2011年7月份曾发布主题为“.NET代码分析工具和技术”的那一期,让广大程序员收获颇丰.四年过去之后,这些工具又进一步做出了很多改进,同时也出现了更多的选择.本文对当前主流的一些Visual Studio代码性能分析工具进行简单的梳理