リンクタイム最適化(LTO)を使用しない理由はありますか?
2023-10-06 17:52:40
質問
GCC、MSVC、LLVM、そしておそらく他のツールチェーンは、コンパイルユニット間の呼び出しの最適化を可能にするリンク時(プログラム全体)最適化のサポートを持っています。
量産用ソフトウェアをコンパイルする際にこのオプションを有効にしない理由はあるのでしょうか?
どのように解決するのですか?
私は 製品版ソフトウェア" というのは、顧客に出荷する/生産に入るソフトウェアのことですね。の回答は なぜ常にコンパイラの最適化を使用しないのですか? (親切な指摘で マンカーズ ) は、コードをデバッグしたい場合 (つまり、ソフトウェアがまだ開発段階にあり、製品版ではない場合) に適用されることがほとんどです。
この回答を書いてから 6 年が経過し、更新が必要です。2014年当時は、問題点は
- リンク時間の最適化が時折導入される 微妙なバグ が発生することがあります。 カーネルへのリンク時間最適化 . 2020年時点では、この問題は少なくなっていると思います。このようなコンパイラやリンカのバグから身を守りましょう。出荷しようとしているソフトウェアが正しいかどうかをチェックするために適切なテストを行うこと。
- コンパイル時間の増加 . のおかげで、2014年以降、状況は大幅に改善されたという主張があります。 スリムオブジェクト .
- 大きなメモリ使用量 . この投稿 は、パーティション分割のおかげで、近年状況が劇的に改善されたと主張しています。
2020年現在、私はどのプロジェクトでもデフォルトでLTOを使用するようにしています。
関連
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】Visual C++で "Debug Assertion failed "の原因となる行を見つける。
-
[解決済み】C++の余分な資格エラー
-
[解決済み】Visual Studioのデバッガーエラー。プログラムを開始できません 指定されたファイルが見つかりません
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] マクロで無意味なdo-while文やif-else文を使っているのはなぜですか?
-
[解決済み】なぜC++プログラマは'new'の使用を最小限に抑えなければならないのでしょうか?
-
[解決済み】なぜC言語で数学ライブラリをリンクする必要があるのですか?
-
[解決済み] O3/Ofastを超えるG++の最適化
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] エラーが発生する。ISO C++は型を持たない宣言を禁じています。
-
[解決済み】C++エラー:の初期化に一致するコンストラクタがありません。
-
[解決済み】Visual C++で "Debug Assertion failed "の原因となる行を見つける。
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された
-
[解決済み] 関数/メソッドのキーワード 'inline' はいつ書けばよいのですか?
-
[解決済み] ヘッダーオンリーライブラリの利点
-
[解決済み] C++で文の順序を強制する