gpt4 book ai didi

performance - 如何提高填充大量 TreeView 的性能?

转载 作者:行者123 更新时间:2023-12-03 14:49:43 25 4
gpt4 key购买 nike

首先,我正在以问答方式回答我自己的问题,所以我不一定需要任何人来回答这个问题。这是我学到的东西,很多人都可以利用它。

我有一个由许多不同节点组成的 TreeView 。每个节点的 Data 属性中都有一个对象,这些对象引用一个主对象列表中的不同层次结构级别,该列表相当大(数千个项目)。一个节点代表此主要列出对象的特定属性,其中树允许用户选择一个节点来查看属于该特定选定类别的项目。

当树被填充时,它变得非常耗时(在某些情况下需要 2 分钟),因为每个节点都需要迭代这个大列表中的每个项目,并找到这个列表中属于任何给定节点的每个项目。因此,如果这棵树中有 500 个节点,那么它会迭代这个大列表 500 次。总共有 3 个级别的层次结构 - 加载第二个和第三个级别时会出现性能瓶颈,但第一个级别简单且快速。

现在没有任何选项可以提高迭代此列表数百次的性能。我想知道是否有任何已知的技巧可以提高填充 TreeView 的性能?

目前的工作原理如下:

var
X: Integer;
N: TTreeNode;
O: TMyObject;
begin
for X := 0 to MyObjectList.Count - 1 do begin
O:= TMyObject(MyObjectList[X]); //Object which Node represents
N:= TreeView.Items.AddChild(nil, O.Caption);
N.Data:= O;
LoadNextLevel(N); //Populates child nodes by iterating through master list again
end;
end;

每个附加级别都有类似的方法。

PS - 层次结构的第一层由其自己的单独列表(大约 50 个对象)填充,而第二层和第三层由主列表中数千个对象的属性填充。这就是为什么第一个级别加载很快,而其余级别加载很慢的原因。

最佳答案

如果您真的关心填充大型 TreeView 的速度,您应该研究 virtualTreeView ( http://code.google.com/p/virtual-treeview/ )。
它是一个开源 TreeView ,专门设计为虚拟的,并最大限度地提高大型 TreeView 的速度/内存。
这是一个了不起的组件。

关于performance - 如何提高填充大量 TreeView 的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19943503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com