gpt4 book ai didi

VBA - 内存优化的类与类型

转载 作者:行者123 更新时间:2023-12-04 22:09:17 25 4
gpt4 key购买 nike

那里的专家-快速提问...

在 Excel VBA 中,我创建了一个包含 4 个字符串变量的类 - 没有构造函数,没有别的。

现在,在我的代码中,我正在遍历一个 ENORMOUS 数组(100k + 次迭代)
不断创建类的新实例,为其变量赋值,使用它然后将其分配给 MyClass = nothing。然后再次循环:

Dim x As New MyClass
Set x = Nothing

For i = 0 to 1000000
x.Var1 = "XYZ"
x.Var2 = "abc"
x.Var3 = "123"
x.Var4 = 456

... Use x ...

Set x = Nothing

Next i

鉴于这种用法,将 x 定义为类或公共(public)类型会更节省内存吗(或者它真的没有区别)?

谢谢!!

最佳答案

他们按照你写的方式,使用类肯定会比类型花费更长的时间(在我的机器上长 5 倍)。这是因为当您销毁类时,您会不断地重新分配和重新分配内存。不过,您可能不需要销毁该类,只需将其保存在内存中并更改其属性即可。这个

Sub test3()

Dim x As CMyClass
Dim i As Long
Dim lStart As Long

lStart = Timer

Set x = New CMyClass

For i = 0 To 1000000
x.Var1 = "XYZ"
x.Var2 = "abc"
x.Var3 = "123"
x.Var4 = 456
Next i

Debug.Print Timer - lStart

End Sub

花费与 UDT 相同的时间,因为该类仅创建一次,并且仅在超出范围时才被销毁。除非有必要将其设置为 Nothing - 如果您可以使用 Type 代替它,您可能不会这样做 - 那么您不应该这样做。在这种情况下,看起来您可以使用 Type 或 Class 并获得相同的性能。

关于VBA - 内存优化的类与类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12803657/

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