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
我有一个非常耗时的 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