Je faisais des essais de vitesse et j'ai constater une lacune du compilateur
à savoir que :
a = b * 10 * 50 * 100
est plus lent que :
a = 10 * 50 * 100 * b
ce qui n'est pas logique.
Le compilateur arrive bien à simplifier
a = 10 * 50 * 100 * b
en regroupant les constantes en seules variable, donc à compiler directement a = 50000 * b
mais si on écrit
a = b * 10 * 50 * 100
il n'y arrive pas
Le test :
Code : Tout sélectionner
#Max = 400000000
Dim Temps(10)
Temps(1) = ElapsedMilliseconds()
For i = 1 To #Max
Calcul.f = Radian(i * 10) + 5
Next
Temps(2) = ElapsedMilliseconds()
For i = 1 To #Max
Calcul.f = 10 * #PI / 180 * i + 5
Next
Temps(3) = ElapsedMilliseconds()
For i = 1 To #Max
Calcul.f = i * 10 * #PI / 180 + 5
Next
Temps(4) = ElapsedMilliseconds()
For i = 1 To #Max
Calcul.f = i * (10 * #PI / 180) + 5
Next
Temps(5) = ElapsedMilliseconds()
For i = 1 To #Max
Calcul.f = (10 * #PI / 180) * i + 5
Next
Temps(6) = ElapsedMilliseconds()
; Affichage du résultat
For i = 2 To 6
If i > 2
Texte.s + Chr(10)
EndIf
Texte.s + Str(Temps(i) - Temps(i - 1))
If i > 2
If (Temps(i) - Temps(i - 1)) > (Temps(2) - Temps(1))
Texte + " ( x " + StrD((Temps(i) - Temps(i - 1)) / (Temps(2) - Temps(1)), 2) + " )"
Else
Texte + " ( / " + StrD((Temps(2) - Temps(1)) / (Temps(i) - Temps(i - 1)), 2) + " )"
EndIf
EndIf
Next
MessageRequester("Temps", Texte)
++