2009-03-19 6 views
2

Gibt es einen Leistungsvorteil, Variablen zu Beginn einer Funktion zu haben, bevor sie deklariert werden, bevor sie verwendet werden?Leistungsvorteil von Variablendeklarationen in VBA?

ich VBA bin mit in MS Access 2003

Beispiel,

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

Verse

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

Antwort

8

Absolut kein Unterschied für VBA. Das Deklarieren der Variablen wirkt sich nur auf das Design-Time-Debugging aus (die IDE weiß, welche Auto-Completion (Intellisense) angezeigt werden soll). In diesem Fall wirkt sich dies nicht auf die Leistung aus. Ich habe auch eine Menge VBA-Makros gemacht, und das ist eine Sache, die mir aufgefallen ist.

Als Demonstration, nur versuchen, einen Haltepunkt auf einer Dim Anweisung zu setzen, und Sie werden sehen, dass es nicht zulässt. Dies liegt daran, dass diese Anweisung niemals ausgeführt wird und nur zur Steuerung der Just-in-Time-Debugging-Engine verwendet wird.

Hoffe, es hilft

2

zu Wadih M Antwort hinzuzufügen, alle deklarierten Variablen vor dem Verfahren erstellt werden, unabhängig von ihrer Position in dem Verfahren initialisiert.

Um dies zu testen, versuchen, eine Variable zu verwenden, ohne es zu deklarieren (tun Sie Option Explicit, richtig verwenden?):

Option Explicit 

Private Sub notDeclared() 
    Dim x As Long 

    Debug.Print x 
    Debug.Print y 
End Sub

Diese eine „Variable nicht definiert Fehler“ kehrt mit der Breakpoint die Prozedur Erklärung sein , dh bevor irgendein Code ausgeführt wird, und die nicht deklarierte Variable y hervorgehoben.

+0

Ja, ich verwende Option Explicit. Danke für die Hilfe. –

1

nicht in der Leistung des Codes selbst wie von Wadih beantwortet.

Aber die Leistung in den Code, sicher zu halten. Ich würde sagen, die meisten Programmierer erwarten, dass die Variablen oben in der Funktion definiert werden. Ein einfaches Beispiel wie Sie zur Verfügung gestellt und es spielt keine Rolle. Aber eine komplexe Funktion mit variablen Deklarationen, die im Code eingefügt sind, lässt sie überladen wirken. Dies verlangsamt die Zeit, um den Code zu lesen und zu erweitern. So erhöht sich die Zeit, die es braucht, um zu warten.

Es gibt auch das mögliche Problem mit einer Variablen in einer Schleife zu erklären und nicht die Absicht hat. Daher wird die Variable mit jeder Schleifeniteration zurückgesetzt.

und Leistung des Codes selbst ist oft nicht so wichtig wie die Leistung in den Code beibehalten wird.

+0

"Es gibt auch das mögliche Problem, eine Variable in einer Schleife zu deklarieren und nicht zu beabsichtigen. Daher wird die Variable mit jeder Schleifeniteration zurückgesetzt" - es gibt kein Problem: Die Variable wird nicht mit jeder Iteration zurückgesetzt. – onedaywhen

+2

"Ich würde sagen, die meisten Programmierer erwarten, dass die Variablen am Anfang der Funktion definiert werden" - VBA-Programmierer vielleicht. Die meisten C# .NET-Programmierer sollten erwarten, dass Variablen deklariert werden, wenn sie zum ersten Mal verwendet werden, und ich vermute, dass VB.NET-Programmierer diesem Beispiel folgen. – onedaywhen

Verwandte Themen