Laufzeitoptimierung von lokalen Variablen usw.
-
Hallo!
Ist es bei modernen Compilern ueberhaupt von Vorteil z.B. lokale Variablen als static zu deklarieren?
Meine naive Annahme ist dass die Speicherverwaltung von statischen Variablen effizienter ist, es aber Probleme mit dem automatischem inlinen geben koennte.Stimmt das noch so?
Danke fuer Eure Tips und Ratschlaege!
-
-
Da geht es aber nicht genau um das selbe

Nein, es hat meistens keinen Sinn,
static-Variablen zu erstellen, um Performance zu sparen.staticist dafür gedacht, dass eine Variable bis zum Programmende existiert. Es sollte auch dafür verwendet werden, und nicht, weil die Annahme besteht, es führe zu schnellerem Code.
-
außerdem führen static variabelen zu problemen, wenn mehrere Thread gleichzeitig die Funkiotn aufrufen, die static statt lokale benutzt
-
Hmm, sollten statische Variablen nicht sogar *langsamer* sein? Hier muss der Compiler schließlich noch extra Code generieren, der dafür sorgt, dass die Variable beim ersten (aber *nur* beim ersten) Aufruf der Funktion initialisiert wird.
Das bedeutet eigentlich mindestens eine Extra-Abfrage zu Beginn des Funktionsaufrufs.
-
Konrad Rudolph schrieb:
Hmm, sollten statische Variablen nicht sogar *langsamer* sein?
Kommt auf die Kosten der Initialisierung.
Aber idR ist es natürlich langsamer, allein wegen der Cache Lokalität.
-
sqrt(-1) schrieb:
Ist es bei modernen Compilern ueberhaupt von Vorteil z.B. lokale Variablen als static zu deklarieren?
Da normale und statische Variablen ganz andere Anwendungsbereiche haben, sollte sich meiner Meinung nach die Frage eh nicht stellen.