Excel/VBA 是否优化了冗余变量?

Does Excel/VBA optimize redundant variables away?

我有一个非常耗时的 Excel 宏,其中包含大量输入数据。首先,我将这些数据加载到一个数组 (arr) 中。

这个代码是

for n =1 to 1000000
...
arr(n,1)=arr(n,2)+arr(n,4)*arr(n,78) 
...
next n

比这个快

for n =1 to 1000000
...
Sensor_Top=arr(n,2)
Age       =arr(n,4)
Material  =arr(n,78)
output    =Sensor_Top+Age*Material
arr(n,1)  =output
...
next n

?

所以换句话说,我想包含不必要的变量声明以提高可读性。 VBA 是否会进行某种 JIT 编译来处理这个问题?

据我所知,但话又说回来,VBA 对 P 代码编译的记录并不完整,以至于这种事情很容易看到。

我怀疑编译器是否进行了任何内联或其他类型的优化,但我可能是错的(VB6 确实 有优化设置... something ).

也就是说,编写代码是为了可读性和可维护性。

如果您的代码太慢,瓶颈不会是您使用的变量。

至于 A 是否比 B 快...你有两匹马 - 比赛!

如果你想提高可读性,这也可以:

const c_sensor_top as long = 2
const c_age as long = 4
const c_output as long = 78

for n = 1 to 1000000
    ...
    arr(n,1) = arr(n, c_sensor_top) + arr(n, c_age) * arr(n, c_output) 
    ...
next n

这些辅助变量对性能的影响可以忽略不计。使用枚举会更有效率。

Public Enum NamedArrayColumns
    output = 1
    Sensor_Top = 2
    Age = 4
    Material = 78
End Enum

Sub Foo()
    Rem Some Code

    For n = 1 To 1000000
        arr(n, output) = arr(n, Sensor_Top) + arr(n, Age) * arr(n, Material)
    Next n

End Sub