Variablen in VB.NET
Hallo Forum,
in VB.NET gibt es ja die Möglichkeit, Variablen global oder lokal zu definieren. Zusätzlich können Variablen auch nur innerhalb von z.B. Schleifen gültig sein.
Ist es z.B. aus Performancegründen sinnvoller, die Variablen möglichst global oder möglichst lokal zu definieren?
Viele Grüße,
M. Born
in VB.NET gibt es ja die Möglichkeit, Variablen global oder lokal zu definieren. Zusätzlich können Variablen auch nur innerhalb von z.B. Schleifen gültig sein.
Ist es z.B. aus Performancegründen sinnvoller, die Variablen möglichst global oder möglichst lokal zu definieren?
Viele Grüße,
M. Born
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 247432
Url: https://administrator.de/contentid/247432
Ausgedruckt am: 24.11.2024 um 16:11 Uhr
4 Kommentare
Neuester Kommentar
Moin Marco,
Es kommt hier in erster Linie darauf an in welchem Kontext du die Variablen noch benötigst oder nicht, und man so eben Speicher spart, denn der Speicher lokaler Variablen in einem Loop wird ja nach dem Loop wieder freigegeben (spätestens wenn der GarbageCollector anspringt).
Grüße Uwe
Zitat von @MarcoBorn:
Ist es z.B. aus Performancegründen sinnvoller, die Variablen möglichst global oder möglichst lokal zu definieren?
Der Performance-Unterschied ist so klein das er subjektiv nicht wahrnehmbar ist. Bei modernen Compilern wirst du keinen Unterschied mehr feststellen. Dabei müssen sie aber nicht gleichzeitig als Public deklariert sein, sondern es können natürlich auch lokal in der jeweiligen Prozedur deklarierte Variablen sein.Ist es z.B. aus Performancegründen sinnvoller, die Variablen möglichst global oder möglichst lokal zu definieren?
Es kommt hier in erster Linie darauf an in welchem Kontext du die Variablen noch benötigst oder nicht, und man so eben Speicher spart, denn der Speicher lokaler Variablen in einem Loop wird ja nach dem Loop wieder freigegeben (spätestens wenn der GarbageCollector anspringt).
- http://stackoverflow.com/questions/407255/difference-between-declaring- ...
- http://stackoverflow.com/questions/982963/is-there-any-overhead-to-decl ...
Grüße Uwe
Ich bin mir nicht sicher, ob das ständige Neuanlegen und Löschen einer lokalen Variable innerhalb schneller oder langsamer ist.
Wie du obigen Links entnehmen kannst, ist das eigentliche Anlegen der Variablen außerhalb der Schleife minmalst schneller aber heutzutage absolut zu vernachlässigen, da die Compiler inzwischen intelligent genug sind!Da der RAM-Verbrauch während des Durchlaufs stark ansteigt, möchte ich ggf. über eine bessere Variablennutzung solche Effekte minimieren oder beseitigen.
Wenn du unbedingt RAM zeitig sparen musst, ist der manuelle Aufruf des GarbageCollectors mit GC.Collect() eine Methode Speicher der inzwischen nicht mehr benutzte Variablen freizugeben. Gerade wenn du non-managed (also keine NET-Objekte) wie z.B. COM-Objekte erzeugst ist das in manchen Fällen nötig. Aber normalerweise erledigt das die .NET-Runtime von Zeit zu Zeit automatisch.Lokale Variablen haben ja sowieso eine kürzere Lebenszeit und fallen somit schneller aus dem Speicher als global definierte. Da sie ja nur im jeweiligen Code-Abschnitt gültig sind und dann durch die Runtime freigegeben werden.
Grüße Uwe