如何改进下面代码的性能?
我是你的普通工程师(也就是说,不是一个精明的程序员),并且正在摆弄一个VBA项目,以使其更快地运行。这需要几天,现在我让它在几个小时内运行,但我知道它可以更快,而且最耗时的部分就是这个。
我用下面的代码提供了数千个具有声学/振动光谱信息的矢量。对于每个光谱,代码运行大约需要30秒。
Sub time_test()
'################################################################################################
'This is just to simulate the vector of input data which in reality would be an acoustic spectrum
Dim yval(8000000, 1) As Double
Dim val(8000000, 1) As Double
For i = 0 To 8000000
yval(i, 0) = 100 * Rnd
Next i
Length = 8000001
'################################################################################################
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'From here on is where I must improve the performance of the code
Timing = Timer
For Index = 1 To Length
val(Index - 1, 1) = 20 * Log10(yval(Index - 1, 0), "Pre")
Next Index
Debug.Print Round(Timer - Timing, 2)
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
End Sub
Public Function Log10(Valeur As Double, sType As String) As Double
Select Case sType
Case "Vib"
If Valeur <> 0 Then
Log10 = Log(Valeur) / Log(10#)
End If
Case "Pre"
If Valeur <> 0 Then
Log10 = Log(Valeur / (2 * (10 ^ -5))) / Log(10#)
End If
End Select
End Function