gpt4 book ai didi

vb6 - 无论如何要快速迭代一组 UDT?

转载 作者:行者123 更新时间:2023-12-04 12:28:19 27 4
gpt4 key购买 nike

假设我有一组 UDT。我按如下方式填充它:

public type udtEmp 
Id as long
Name as string
end type

dim col as new Collection
dim empRec as udtEmp, empDummy as udtEmp

for n = 1 to 100000
empRec = empDummy ' reset record

emp.Id = n
emp.Name = "Name " & n

col.add emp, cstr(emp.Id)
next

现在我想遍历它。我使用 Long 数据类型作为 .Item()

的索引
dim n as long 
For n = 1 To 100000
emp = col.Item(n)
Next

上面的代码有效,但它真的很慢 - 需要 10,000 毫秒来迭代。如果我通过 key 访问集合,速度会快得多——78 毫秒。

For n = 1 To 100000
emp = col.Item(cstr(n))
Next

问题是当我遍历集合时,我没有 key 。如果我有一个对象集合而不是 UDT,我可以为 col 中的每个对象,但是对于 UDT,它不会让我以这种方式迭代。

我的一个想法是让索引和键的辅助集合指向主集合,但除非绝对必要,否则我尽量不使代码复杂化。

那么我的选择是什么?

最佳答案

代码的优雅或性能是您必须做出的严肃决定。选择应基于结果的影响。 for each 优雅但缓慢,并且与对象和类一起使用。但如果速度很重要,则使用 UDT 和数组。

在您的情况下,我认为一组 UDT 最适合您的情况。为了获得更快的速度,尝试使用 SAFE_ARRAY 访问数组(您可以通过谷歌搜索),结果令人印象深刻。

关于vb6 - 无论如何要快速迭代一组 UDT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35587636/

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