在假设将分配不必要的大量内存的情况下,我总是害怕将事物声明为变体。
最近我致力于提高电子表格的效果但却产生了相反的印象(请参阅下面的编辑):与Dim myarray() as Variant
相比,Dim myarray() as String
提升了效果
这两个声明的主要区别和后果是什么?
无法在此处找到明确的指导:https://msdn.microsoft.com/en-us/library/aa711948.aspx
编辑:受控性能测试
我进行了受控性能测试(取dim myarray() as Variant
版本,制作副本并将两个变量更改为Dim myarray() as String
)
正如你在下面看到我错了,性能差异并不显着。
Dim myarray() as Variant VERSION
Start 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 VERSION
Start 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
答案 0 :(得分:2)
将数组声明为数组将保存的数据类型是有意义的,这为将来查看代码的任何人提供了清晰度。通常更好的是给你的代码可读性,牺牲一点点内存(尽管这可能取决于场景)。例如,如果您的数组只包含字符串,则将该数组声明为字符串。然而,如果你的数组将包含整数和字符串的混合,那么应该使用一个变体。
本质上,将数组声明为数组类型,该数据类型对于数组将要保留的内容是合乎逻辑的。
如果要从工作表填充数组,则必须将变量声明为变量。尝试填充已声明为字符串的数组(包含工作表中的值)将导致“类型不匹配”调试消息,无论范围的值是否都是字符串。
以下是与VBA中的数组相关的一些MSDN documentation。
无论如何,这就是我声明数组所遵循的内容。为任何未来的开发人员提供更易于阅读的代码> 轻微内存保存。