0

私は、さまざまな歴史的(そして愚かな)理由により、デバッグバージョンでのみ展開できる大規模なレガシープロジェクトに割り当てられました。ご想像のとおり、パフォーマンスの問題がいくつかあります。

プロジェクトはCVisual Studio 6(はい、その古い)で書かれています。「すべてがデバッグバージョンにある」という影響を最小限に抑える方法を探しています。最終的なバイナリに注入されるデバッグコードの量を最小限に抑えるコンパイラまたはリンカのオプションはありますか?または、後でその一部を取り除くことができる外部ユーティリティはありますか?

(これは基本的にばかげた質問であり、リリースに切り替えることになっていることを私は知っていますが、私を信じてください、これは完全に私の制御不能です..そしてそれは事実上毎日私の魂の一部を殺します。)

4

1 に答える 1

2

まず、デバッグ バージョンとリリース バージョンの違いをすべてリストアップし、変更できるものと変更できないものを特定するようにしてください。次に、許可されているすべてのものを変更します。

頭のてっぺんから、私の記憶が正しければ:

  • Debug : デバッグ DLL とリンクします。Release : リリース DLL とのリンク。
  • Debug : 最適化せずにコンパイルします。Release : すべての最適化でコンパイルします。
  • デバッグ: アサーションを使用してコンパイルします ( -D_DEBUG)。Release : アサーションなしでコンパイルします ( -DNDEBUG)。
  • Debug : デバッグ シンボルを使用してコンパイル/リンクします。Release : シンボルをデバッグせずにコンパイル/リンクします (実際にはパフォーマンスへの影響はありません)。
  • 元の開発者がプロ​​ジェクト構成に対して行った任意の変更。

これらすべてから、最初の 2 つだけが実際に違いを生むことができるはずです。DLL は、何らかの (ばかげた) 理由でデバッグ DLL に依存しているためです。2 つ目は、最適化によってプログラムに微妙なバグが現れる可能性があるためです。

于 2012-03-16T14:36:18.263 に答える