首页 > 开发 > 综合 > 正文

低效的selectSingleNode和高效的ListView数据添加

2024-07-21 02:24:26
字体:
来源:转载
供稿:网友

最大的网站源码资源下载站,

以下是santomania带给我们的一些提高代码性能的建议,在他的博客网站上,你能看到不少他关于sharepoint的见解。

一、低效的selectsinglenode

我最近一直在使用reflecting,然而我确实已经通过lamont harrington对此做了提示,虽然对我来说这并不是一个新闻(一般说来,在木桶中,我不会是最慢的鱼^_^),但我发现它仍然值得一提。

反编译xmlnode.selectsinglenode方法,你将获得如下结果(原谅我的vb.net):

public overloads function selectsinglenode(byval xpath as string) as xmlnode

begin function

dim list1 as xmlnodelist
dim node1 as xmlnode
try

list1 = me.selectnodes(xpath)
node1 = list1.itemof(0)

catch argumentoutofrangeexception

node1 = nothing

end try
return node1

end function

你将会看到,selectsinglenode仅仅是selectnodes的包装,这意味着它(最快)不会比selectnode更快,并且,如果你在深入研究一点,selectnodes反编译后如下:

public overloads function selectnodes(byval xpath as string) as xmlnodelist
begin function

im navigator1 as xpathnavigator
navigator1 = me.createnavigator
return new xpathnodelist(navigator1.select(xpath))

end function

让人感到沮丧痛苦的是:selectnodes确实是创造了一个xpathnavigator实例!!

我想,首选的解决方案是:实例化我们自己的xpathnavigator并且在对xml文档执行xpath查询的时候重复使用它,特别是我们执行嵌套循环的查询时。

二、高效的listview数据添加

怎样促进你的listview的性能?不要使用在同一个的循环中去创造和添加listviewitem的方法。更好的方法是:创造一个listviewitem的集合,并且使用addrange方法去添加它们。我显示这个方法对团队中的一个开发者,在大量目录添加的情况下(超过1500条记录),他的listview的性能比原来要高效1000倍。



最后,不知你注意到了没有,dictionaryentry不是一个类,而是一个结构。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表