Visual Basic 6: Performancefallen

Aus Wikibooks
Wechseln zu: Navigation, Suche

Ein großer Performance-Fresser in Visual Basic ist der Datentyp Variant. Wann immer es geht, direkt Byte/Integer/Long, Strings oder Single/Double benutzen, sowie die entsprechenden Datentyp-spezifischen Funktionen. Also z.B. Left$() anstelle von Left(), usw.


Außerdem sehr "gefährlich" ist das automatische Vergrößern von Strings. Eine Anweisung wie:

   For i = 1 To 10000
       str = str & "irgendwas"
   Next i

ist ein großer Flaschenhals. Denn intern wird VB bei jedem Aufruf die Variable str Vergrößern, so dass sie den neuen Inhalt aufnehmen kann. Dazu wird neuer Speicher reserviert, und der bisherige Inhalt umkopiert. Das dauert Zeit. Abhilfe: Vorher einen "Buffer" erzeugen, also z.B. einen String mit Hilfe von Space$() initialisieren. Frage ist natürlich, wie groß. Das hängt von der Situation ab. Ist der String initialisiert, kann man direkt auf die Zeichen zugreifen, indem man die gewöhnungsbedürftige Notation mit Mid$() auf auf der linken Seite benutzt. In etwa:

   Mid$(str, i) = "sonstwas"


Ansonsten gilt: Long-Variablen sind in For-Schleifen am schnellsten, Integer fast genauso, aber Bytes deutlich langsamer. Variablen sind schneller als Eigenschaften (von Objekten, Steuerelementen). Wenn Eigenschaften also sehr häufig gelesen werden müssen, kann es sich lohnen, diese in Variablen zwischenzuspeichern.