AutoIT est un langage de développement informatique (auto-script). Il permet d’exécuter des tâches très simples en haut niveau avec une facilité d’écriture accentuée.
Voici comment optimiser votre code AutoIt
Afin de tester la rapidité du code, vous pouvez utiliser ce fichier : Autoit_Speed.au3
D’après les tests effectués avec le logiciel…
Les boucles For/Next sont plus rapides que les boucles While/WEnd et Do/Until
Local $i, $array
$array = _FileListToArray(@DesktopDir)
For $i = 1 To $array[0]
MsgBox(0, "", $array[$i])
Next
La condition If ($var) est plus rapide que If ($var == 1) ou If ($var == True) Ainsi que If Not ($var) est plus rapide que If ($var == 0) ou If ($var == False)
Local $var
$var = FileExists(@DesktopDir)
If ($var) Then MsgBox(0, « », « OK »)
La condition If ($var == 1) est plus rapide que If ($var == True) Ainsi que If ($var == 0) est plus rapide que If ($var == False)
Les opérateurs « < » et « > » sont plus rapides que les opérateurs « =« , « <=« , ou « >= » $i += 1 est plus rapide que $i = $i + 1 $i -= 1 est plus rapide que $i = $i – 1 $i *= 1 est plus rapide que $i = $i * 1 $i /= 1 est plus rapide que $i = $i / 1
La condition Switch est la plus rapide, Select est moins rapide, If est le moins rapide
Local $Error
$Error = _WinAPI_GetLastError()
Switch $Error
Case 1
MsgBox(0, "", "Error 1")
Case Else
Return SetError($Error, 0, 0)
EndSwitch
La condition If ($var) est plus rapide que If ($var <> « ») Ainsi que la condition If Not ($var) est plus rapide que If ($var == « »)
L’opération If ($var -128 > 0) est plus rapide que If BitAnd($var, 128)
Utiliser des nombres hexadécimaux est plus rapide qu’utiliser des nombres décimaux
Local $val
$val = 0x000001
Return $val
Les variables avec des noms longs mettent plus de temps à l’exécution que des noms de variables courts
La fonction StringRegExpReplace() est moins rapide que la fonction StringReplace() Ainsi que la fonctionStringRegExp()est moins rapide que la fonctionStringInStr()
Utiliser Opt(« ExpandEnvStrings », 1) quand cela est possible, $var = « %TEMP% » est plus rapide que $var = EnvGet(« temp ») ou $var = @TempDir Ainsi, $var = @TempDir est plus rapide que$var = EnvGet(« temp »)
Conseils
Evitez l’utilisation de variables lorsque cela est possible. Ex:
Local $var
$var = @DesktopDir & "\test.txt"
If (FileDelete($var)) Then ...
--------->
If (FileDelete(@DesktopDir & "\test.txt")) Then ...
Préférez utiliser des variables globales pour les réutiliser plutôt que de redéclarer des variables locales (par exemple pour les boucles), cela évite de réallouer une variable.
Global $i
Func Test1()
For $i = 0 To ...
Next
EndFunc
Func Test2()
For $i = 1 To UBound(...) -1
Next
EndFunc
Evitez l’utilisation de fonctions lorsque cela est possible. Par exemple utiliser l’index 0 renvoyé par des fonctions renvoyant des tableaux plutôt que UBound()
Local $var, $i
$var = _FileListToArray(@DesktopDir)
For $i = 1 To $var[0]
...
Next
Déclarez les variables, puis initialisez-les. Ex
Local $var
$var = "test"
Traduction de certaines parties de l’article sur AutoitScript.com