gpt4 book ai didi

vba - "Dim myarray() as String"VS "Dim myarray() as Variant"

转载 作者:行者123 更新时间:2023-12-01 02:31:16 26 4
gpt4 key购买 nike

在假设将分配不必要的大量内存的情况下,我总是害怕将事物声明为变体。

最近致力于提高电子表格的性能,但我得到了相反的印象(见下面的编辑):Dim myarray() as VariantDim myarray() as String 相比,性能有所提高

两项声明的主要区别和后果是什么?

在这里找不到明确的指导:https://msdn.microsoft.com/en-us/library/aa711948.aspx

编辑:受控性能测试

我进行了受控性能测试(取 dim myarray() as Variant 版本,复制并将两个变量更改为 Dim myarray() as String )

正如您在下面看到的,我错了,性能差异并不显着。
Dim myarray() as Variant VERSIONStart 4:05:47 PM

FXLoaded 4:05:47 PM 00:00
TDLoaded 4:06:38 PM 00:51
LisofPCTD 4:06:57 PM 00:19
YDLoaded 4:07:47 PM 00:50
LisofPCYD 4:08:14 PM 00:27
PrintCoBTD 4:08:46 PM 00:32
PrintCoBYD 4:09:18 PM 00:32
Total 03:31 03:31
Dim myarray() as String VERSIONStart 4:25:53 PM

FXLoaded 4:25:53 PM 00:00
TDLoaded 4:26:53 PM 01:00
LisofPCTD 4:27:10 PM 00:17
YDLoaded 4:28:07 PM 00:57
LisofPCYD 4:28:32 PM 00:25
PrintCoBTD 4:29:03 PM 00:31
PrintCoBYD 4:29:34 PM 00:31
Total 03:41 03:41

最佳答案

将数组声明为数组将保存的任何数据类型是有意义的,这为将来查看您的代码的任何人提供了清晰度。通常最好让您的代码具有可读性,牺牲一点内存节省(尽管这可能取决于场景)。例如,如果您的数组将只包含字符串,则将该数组声明为字符串。然而,如果您的数组将包含整数和字符串的混合,则应使用变体。

本质上,将数组声明为数据类型,这对于数组将要保存的内容是合乎逻辑的。

如果要从工作表中填充数组,则必须将变量声明为变体。尝试填充已声明为字符串的数组(使用工作表中的值)将导致“类型不匹配”调试消息,无论范围的值是否都是字符串。

这是一些MSDN documentation与 VBA 中的数组有关。

无论如何,这就是我声明数组所遵循的。让 future 的开发人员更容易阅读代码 > 轻微 内存节省。

关于vba - "Dim myarray() as String"VS "Dim myarray() as Variant",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31462655/

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