首页 > 其他分享 >一个功能更强大,性能更高的树控件DevComponents.AdvTree.AdvTree(几种树形控件汇总)

一个功能更强大,性能更高的树控件DevComponents.AdvTree.AdvTree(几种树形控件汇总)

时间:2023-12-26 11:55:06浏览次数:36  
标签:控件 TimeSpan DevComponents ts ToString new Nodes 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()节点,速度却相当慢。。

  

标签:控件,TimeSpan,DevComponents,ts,ToString,new,Nodes,AdvTree
From: https://www.cnblogs.com/Dongmy/p/17927826.html

相关文章

  • 界面控件DevExpress v23.2全新发布 - 全新升级的UI本地化API
    DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpressDashboardeXpressApp框架、适用于VisualStudio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress今年第一个重要版本v23.1正式发布,该版本拥有众多新产品和数十个具有高影响力......
  • 如何获得控件的On属性事件列表?
     用RTTI usesstrutils,rtti,System.typinfo;{$R*.dfm}procedureTForm2.FormCreate(Sender:TObject);varcontext:TRttiContext;rType:TRttiType;aPropery:trttiproperty;LProperty:trttiproperty;LField:TRttiField;vari,j:Integer;......
  • Qt/C++控件设计器/属性栏/组态/可导入导出/中文属性/串口网络/拖曳开发
    一、功能特点自动加载插件文件中的所有控件生成列表,默认自带的控件超过120个。拖曳到画布自动生成对应的控件,所见即所得。右侧中文属性栏,改变对应的属性立即应用到对应选中控件,直观简洁,非常适合小白使用。独创属性栏文字翻译映射机制,效率极高,可以非常方便拓展其他语言的属性......
  • [Qt5&布局] 控件自动填满所在布局框架
    作者:丶布布如图,在界面布局时,将几个QT控件进行布局时,默认边缘时有一定间隙的(红框标注),有时为了美观,可以将布局边缘的间隙设置成我们想要的宽度具体设置方法:默认边缘间隙为11,设置为1,看一下效果: 戳戳小手帮忙点个免费的赞和关注吧,嘿嘿。......
  • Android应用开发长按拖拽-Flutter的LongPressDraggable控件回调函数onDraggableCancel
    onDraggableCanceled介绍LongPressDraggable的onDraggableCanceled回调在拖动被取消时触发。拖动可能会被取消,例如用户在拖动开始后移动了太快或在放置之前取消了拖动。onDraggableCanceled的使用以下是如何使用onDraggableCanceled的示例:LongPressDraggable<int>(//......
  • WPF中通过附加属性实现任意控件拖动调整大小
    publicclassResizeBehavior{//附加属性用于标识控件是否可调整大小publicstaticreadonlyDependencyPropertyIsResizableProperty=DependencyProperty.RegisterAttached("IsResizable",typeof(bool),typeof(ResizeBehavior),newP......
  • WPF自定义控件之图形解锁控件 ScreenUnLock
    ScreenUnLock与智能手机上的图案解锁功能一样。通过绘制图形达到解锁或记忆图形的目的。本人突发奇想,把手机上的图形解锁功能移植到WPF中。也应用到了公司的项目中。在创建ScreenUnLock之前,先来分析一下图形解锁的实现思路。1.创建九宫格原点(或更多格子),每个点定义一个坐标值......
  • Safari 17信任站点修改造成的工商银行网银控件无法正常使用
    MacOS14.1中,Safari浏览器版本17.1,变更了信任站点流程。在工商银行使用JSP技术开发的网页上存在点击“在此网站上启用”但是检测不到扩展已安装的问题。原因工行个人网银登录网⻚使用jsp开发,⻚面情况非常复杂,嵌套了多个不同网址。通过日志可以发现还请求了epass.icbc.com.......
  • 界面控件DevExpress WinForms PDF Viewer,让应用轻松显示PDF文档(一)
    DevExpressWinForms的PDFViewer(查看器)控件使用户可以轻松地在Windows应用程序中直接显示PDF文档,而无需在最终用户的机器上安装外部PDF阅读器。DevExpressWinForms有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。同时能完美构建流畅、美观且易于使用的应......
  • 【代码块】-winform 获取控件属性和事件、自定义控件的自定义方法
    整理代码块代码块整理后存储,供后期使用C#获取属性,获取事件逻辑Controlcontrol=Controls.Find("button1",true)[0];//获取属性objecto=control.GetType().GetProperty("PropertyName").GetValue(control,null);//获取事件System.Reflection.EventInfoev=contr......