C++におけるゼロコスト静的変数:リンカ機能の活用
2025-07-19
この記事では、C++における静的変数の初期化に伴うオーバーヘッドについて論じています。ブロックスコープの静的変数の初期化は、`__cxa_guard_acquire`を使用した同期など、通常ランタイムコストが発生します。著者は、UNIXリンカの機能を利用した最適化手法を提案しています。これは、専用のセクションに事前に領域を割り当て、グローバル初期化時に初期化を行うことで、ランタイムコストを排除し、ブロックスコープの静的変数をファイルスコープの静的変数と同等の効率にします。記事では、インライン関数やテンプレートメンバーによるセクション属性の競合処理など、実装の詳細を説明し、最終的にゼロコストの最適化を実現しています。
開発
リンカ