AW: Einfacher Vgl? Weißt du überhaupt, ...
12.01.2016 08:45:45
Daniel
Hi Luc
da magst du recht haben, dass ein Vergleich aufwendig ist.
nichtsdestotrotz ist
Vergleich + Wertwandlung + Multiplikation + Subtraktion + Wertzuweisung
aufwendiger als
Vergleich + Wertzuweisung
dein zweiter Code enthält zwar keinen Vergleich, aber mit der Division auch keine ganz simple Berechnung.
Vielleicht bezieht sich dein Wissen über den aufwendigen Vergleich ja auf die IIF-Funktion, diese ist tatsächlich sehr langsam, das gilt aber nicht für IF-Then.
kannst ja mal testen, hier ein code dazu:
Sub test()
Dim t As Double
Dim i As Long, y As Long, z As Long
Const anz = 100000000
t = Timer
For i = 1 To anz
Next
Debug.Print "Leerschleife", Timer - t
t = Timer
For i = 1 To anz
If y = 27 Then y = 29
Next
Debug.Print "If Then", Timer - t
t = Timer
For i = 1 To anz
y = y - 2 * CInt(y = 27)
Next
Debug.Print "Vergleich", Timer - t
t = Timer
For i = 1 To anz
z = y + 2 * (y \ 27)
Next
Debug.Print "Division", Timer - t
t = Timer
For i = 1 To anz
z = y + IIf(y >= 27, 2, 0)
Next
Debug.Print "IIF", Timer - t
End Sub
der ergibt bei mir folgende Laufzeiten (c.a. in sec)
Leerschleife: 0,5
IF Then 1,0
Vergleich: 1,5
Division: 1,5
IIF: 15
Gruss Daniel