低效的SelectSingleNode和高效的ListView数据添加
2008-04-24 16:22
399 查看
以下是Santomania带给我们的一些提高代码性能的建议,在他的博客网站上,你能看到不少他关于SharePoint的见解。一、低效的[/b]SelectSingleNode[/b]我最近一直在使用reflecting,然而我确实已经通过Lamont Harrington对此做了提示,虽然对我来说这并不是一个新闻(一般说来,在木桶中,我不会是最慢的鱼^_^),但我发现它仍然值得一提。反编译XmlNode.SelectSingleNode方法,你将获得如下结果(原谅我的VB.Net):Public Overloads Function SelectSingleNode(ByVal xpath As String) As XmlNodeBegin FunctionDim list1 As XmlNodeList
Dim node1 As XmlNode
Try list1 = Me.SelectNodes(xpath)
node1 = list1.ItemOf(0)Catch ArgumentOutOfRangeExceptionnode1 = NothingEnd Try
Return node1End Function 你将会看到,SelectSingleNode仅仅是SelectNodes的包装,这意味着它(最快)不会比SelectNode更快,并且,如果你在深入研究一点,SelectNodes反编译后如下:Public Overloads Function SelectNodes(ByVal xpath As String) As XmlNodeList
Begin Functionim navigator1 As XPathNavigator
navigator1 = Me.CreateNavigator
Return New XPathNodeList(navigator1.Select(xpath))End Function 让人感到沮丧痛苦的是:SelectNodes确实是创造了一个XPathNavigator实例!! 我想,首选的解决方案是:实例化我们自己的XPathNavigator并且在对xml文档执行XPath查询的时候重复使用它,特别是我们执行嵌套循环的查询时。 二、[/b]高效的[/b]ListView[/b]数据添加[/b][/b] 怎样促进你的ListView的性能?不要使用在同一个的循环中去创造和添加ListViewItem的方法。更好的方法是:创造一个ListViewItem的集合,并且使用AddRange方法去添加它们。我显示这个方法对团队中的一个开发者,在大量目录添加的情况下(超过1500条记录),他的ListView的性能比原来要高效1000倍。 最后,不知你注意到了没有,DictionaryEntry不是一个类,而是一个结构。
Dim node1 As XmlNode
Try list1 = Me.SelectNodes(xpath)
node1 = list1.ItemOf(0)Catch ArgumentOutOfRangeExceptionnode1 = NothingEnd Try
Return node1End Function 你将会看到,SelectSingleNode仅仅是SelectNodes的包装,这意味着它(最快)不会比SelectNode更快,并且,如果你在深入研究一点,SelectNodes反编译后如下:Public Overloads Function SelectNodes(ByVal xpath As String) As XmlNodeList
Begin Functionim navigator1 As XPathNavigator
navigator1 = Me.CreateNavigator
Return New XPathNodeList(navigator1.Select(xpath))End Function 让人感到沮丧痛苦的是:SelectNodes确实是创造了一个XPathNavigator实例!! 我想,首选的解决方案是:实例化我们自己的XPathNavigator并且在对xml文档执行XPath查询的时候重复使用它,特别是我们执行嵌套循环的查询时。 二、[/b]高效的[/b]ListView[/b]数据添加[/b][/b] 怎样促进你的ListView的性能?不要使用在同一个的循环中去创造和添加ListViewItem的方法。更好的方法是:创造一个ListViewItem的集合,并且使用AddRange方法去添加它们。我显示这个方法对团队中的一个开发者,在大量目录添加的情况下(超过1500条记录),他的ListView的性能比原来要高效1000倍。 最后,不知你注意到了没有,DictionaryEntry不是一个类,而是一个结构。
相关文章推荐
- C#操作xml SelectNodes,SelectSingleNode总是返回NULL原因和解决方案
- 利用Dtpicker向listview中添加固定日期数据
- 【.Net码农】C#如何判断XML结点xmldocSource.SelectSingleNode("dd") 是否存在
- listview和listFragment详细版,已解决chebox的复用,Glide实现图片的圆形,以及按钮添加数据
- C#操作xml SelectNodes,SelectSingleNode总是返回NULL 与 xPath 介绍
- listView下拉刷新上拉添加数据的处理
- android 为 ListView Item中的组件添加事件 以及更新数据
- Jquery+Ajax实现Select动态添加数据
- select2,利用ajax高效查询大数据列表(可搜索、可分页)
- C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)
- select 添加数据库中数据
- SelectSingleNode和SelectNodes区别
- 给DataTable添加主键 几何级提升Select筛选数据的速度
- Xml中SelectSingleNode方法中的xpath用法
- Xml中SelectSingleNode方法中的xpath用法 .
- C#操作xml SelectNodes,SelectSingleNode总是返回NULL 与 xPath 介绍
- 【万里征程——Windows App开发】ListView&GridView之添加数据
- 给listView 添加滚动监听(当listView 向上滚动时,到底之后,加载新的数据,向下翻页 加载数据)
- selectSingleNode方法中,用[0]还是[1]来选第一个匹配节点呢?
- Android ListView分页,动态添加数据