AutoIT : Optimiser la vitesse de son logiciel

Article décrivant comment optimiser son code autoit pour le rendre plus rapide, plus performant.
  • Développement

Autoit

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…

  1. 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 
  2. 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 »)

  3. La condition If ($var == 1) est plus rapide que If  ($var == True)
    Ainsi que If ($var == 0) est plus rapide que If ($var == False)
  4. 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
  5. 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 
  6. La condition If ($var) est plus rapide que If ($var <> «  »)
    Ainsi que la condition If Not ($var) est plus rapide que If ($var == «  »)
  7. L’opération If ($var -128 > 0) est plus rapide que If BitAnd($var, 128) 
  8. Utiliser des nombres hexadécimaux est plus rapide qu’utiliser des nombres décimaux
    Local $val 
    $val = 0x000001 
    Return $val 

     

  9. Les variables avec des noms longs mettent plus de temps à l’exécution que des noms de variables courts
  10. La fonction StringRegExpReplace() est moins rapide que la fonction StringReplace()
    Ainsi que la fonction StringRegExp() est moins rapide que la fonction StringInStr()

  11. 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

  1. 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 ...
    
  2. 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 
  3. 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 
  4. Déclarez les variables, puis initialisez-les. Ex
    Local $var
    $var = "test" 

Traduction de certaines parties de l’article sur AutoitScript.com

Article publié le

Dernière modification le

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.