2009-03-19 11 views
2

Y a-t-il un avantage de performance à ce que les variables cotées au début d'une fonction soient déclarées juste avant d'être utilisées?Bénéfice de performance des déclarations de variables dans VBA?

J'utilise VBA dans MS Access 2003.

Exemple,

Function f(y As Long) As Long 
     Dim x As Long 
     If y <> 0 Then 
      x = 1000000 
     End If 
End Function 

versets

Function f(y As Long) As Long 
     If y <> 0 Then 
      Dim x As Long 
      x = 1000000 
     End If 
End Function 

Répondre

8

Absolument aucune différence pour VBA. La déclaration des variables n'affectera que le débogage au moment du design (l'EDI va savoir ce que l'auto-complétion (intellisense) doit montrer). Cela n'affecte en rien les performances, dans ce cas. J'ai aussi fait beaucoup de macros VBA, et c'est une chose que j'ai remarquée. En guise de démonstration, essayez de définir un point d'arrêt sur une instruction Dim, et vous verrez que cela ne vous est pas permis. C'est parce que cette instruction n'est jamais exécutée, et est seulement utilisée pour guider le moteur de débogage just-in-time.

Hope it helps

2

Pour ajouter à la réponse de M Wadih, toutes les variables déclarées sont initialisés avant la procédure en cours de compilation, quelle que soit leur position dans la procédure.

Pour tester cela, essayez d'utiliser une variable sans la déclarer (vous utilisez Option Explicit, non?):

Option Explicit 

Private Sub notDeclared() 
    Dim x As Long 

    Debug.Print x 
    Debug.Print y 
End Sub

Cela renvoie une « erreur variable non défini » avec le point d'arrêt étant la déclaration de procédure , c'est-à-dire avant que le code ne soit exécuté, et la variable non déclarée y est mise en surbrillance.

+0

Oui, j'utilise Option Explicit. Merci pour l'aide. –

1

Pas dans l'exécution du code lui-même comme a été répondu par Wadih.

Mais la performance dans la maintenance du code, bien sûr. Je dirais que la plupart des programmeurs s'attendent à ce que les variables soient définies en haut de la fonction. Un exemple simple comme celui que vous avez fourni et peu importe. Mais une fonction complexe avec des déclarations variables intercalées dans le code le rend encombré. Ralentissant ainsi le temps de lire et de grok le code. Augmenter ainsi le temps qu'il faut pour maintenir.

Il y a aussi le problème possible avec la déclaration d'une variable dans une boucle sans avoir l'intention de le faire. Ainsi, la variable est réinitialisée à chaque itération de boucle.

Et la performance du code lui-même n'est souvent pas aussi importante que les performances dans la maintenance du code.

+0

"Il y a aussi le problème possible de déclarer une variable dans une boucle sans avoir l'intention de la redéfinir avec chaque itération de boucle" - il n'y a pas de problème: la variable ne se réinitialise pas à chaque itération. – onedaywhen

+2

"Je dirais que la plupart des programmeurs s'attendent à ce que les variables soient définies en haut de la fonction" - peut-être les programmeurs VBA. La plupart des programmeurs C# .NET doivent s'attendre à ce que les variables soient déclarées lors de leur première utilisation/utilisation et je suppose que les codeurs VB.NET suivent le même chemin. – onedaywhen

Questions connexes