一个功能更强大,性能更高的树控件DevComponents.AdvTree.AdvTree

原文链接:https://www.cnblogs.com/a7373773/archive/2009/07/27/1532236.html

一直在用DevComponents.DotNetBar2  控件
近来探索Add()和AddRange()的性能问题。
一样用极为不专业不科学的方法,
比较DevComponents.AdvTree.AdvTree 的Add()和AddRange()的性能


 1private void buttonX1_Click(object sender, EventArgs e)
 2        {
 3            TimeSpan ts1 = new TimeSpan(DateTime.Now.Ticks);
 4
 5            advTree1.Nodes.Clear();
 6
 7            for (int i = 0; i < integerInput1.Value; i++)
 8            {
 9                Node node = new Node();
10                node.Text = "这是第:" + i.ToString() + "节点";
11
12                advTree1.Nodes.Add(node);
13            }
14
15            TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks);
16
17            TimeSpan ts = ts1.Subtract(ts2).Duration();
18
19            lbltiem1.Text = ts.Minutes.ToString() + "分钟" +
20                ts.Seconds.ToString() + "秒" +
21                ts.Milliseconds + "毫秒";
22        }
23
24        private void buttonX2_Click(object sender, EventArgs e)
25        {
26            TimeSpan ts1 = new TimeSpan(DateTime.Now.Ticks);
27
28            advTree1.Nodes.Clear();
29
30            Node[] nodes = new Node[integerInput1.Value];
31
32            for (int i = 0; i < integerInput1.Value; i++)
33            {
34                Node node = new Node();
35                node.Text = "这是第:" + i.ToString() + "节点";
36
37                nodes[i] = node;
38            }
39
40            advTree1.Nodes.AddRange(nodes);
41
42            TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks);
43
44            TimeSpan ts = ts1.Subtract(ts2).Duration();
45
46            lbltiem2.Text = ts.Minutes.ToString() + "分钟" +
47                ts.Seconds.ToString() + "秒" +
48                ts.Milliseconds + "毫秒";
49        }
50
51        private void buttonX3_Click(object sender, EventArgs e)
52        {
53            TimeSpan ts1 = new TimeSpan(DateTime.Now.Ticks);
54
55            advTree1.Nodes.Clear();
56
57            TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks);
58
59            TimeSpan ts = ts1.Subtract(ts2).Duration();
60
61            lbltiem3.Text = ts.Minutes.ToString() + "分钟" +
62                ts.Seconds.ToString() + "秒" +
63                ts.Milliseconds + "毫秒";
64        }
65
66        private void buttonX4_Click(object sender, EventArgs e)
67        {
68            TimeSpan ts1 = new TimeSpan(DateTime.Now.Ticks);
69
70            for (int i = advTree1.Nodes.Count - 1; i >= 0; i--)
71            {
72                advTree1.Nodes.RemoveAt(i);
73            }
74
75            TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks);
76
77            TimeSpan ts = ts1.Subtract(ts2).Duration();
78
79            lbltime4.Text = ts.Minutes.ToString() + "分钟" +
80                ts.Seconds.ToString() + "秒" +
81                ts.Milliseconds + "毫秒";
82        }

分别测试1000个节点,5000个节点,10000个节点。

 

 

 

 


上面所取的花费时间 都是多次测试后,取最快的时间。
结果比较:

 性能比较


.net自带的树控件ListBox 性能比较


比较后,DevComponents.AdvTree.AdvTree 的Add()和AddRange()的性能
要比TreeView和ListBox  都要高出很多。

但是DevComponents.AdvTree.AdvTree  有个很耗时的地方。
就是单个移除节点。Nodes.RemoveAt()和Nodes.Remove();

Nodes.Clear()是清除所有节点。速度很快。
但是单个的Remove()节点,速度却相当慢。。

  

posted @   yinghualeihenmei  阅读(199)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2022-12-26 路径中具有非法字符;数据库字段中的?
2022-12-26 操作完法完成,因为文件已在IIS Express Worker Process中打开
点击右上角即可分享
微信分享提示