Nullkosten-Statische Variablen in C++: Ausnutzung von Linker-Funktionen

2025-07-19

Dieser Artikel befasst sich mit dem Performance-Overhead der Initialisierung statischer Variablen in C++. Block-lokale statische Variablen verursachen in der Regel Laufzeitkosten, wie z. B. die Synchronisierung mit `__cxa_guard_acquire`. Der Autor schlägt eine Optimierung vor, die Funktionen des Unix-Linkers nutzt: Vorab-Zuweisen von Speicherplatz in einem dedizierten Abschnitt und Durchführung der Initialisierung während der globalen Initialisierung. Dies eliminiert den Laufzeit-Overhead und macht block-lokale statische Variablen genauso effizient wie datei-lokale. Der Artikel beschreibt die Implementierung detailliert, einschließlich der Behandlung von Abschnittattributkonflikten aus Inline-Funktionen und Template-Mitgliedern, und erreicht so letztendlich eine Nullkosten-Optimierung.

Entwicklung