web-dev-qa-db-ja.com

「インクリメンタルリンク」とは何ですか?

MicrosoftのMSDNとWeb全体を見てきましたが、それが何であるかについて本当に良いアイデアを得ることができませんでした。

完成したプログラムは、実行時にさまざまな時点でDLLをロードすることを意味しますか?

私は完全に外れていますか? :)

99
Russel

リンクには、ソースファイルから作成されたすべての.objファイルと、参照するすべての.libファイルを出力(.exeまたは.dll)にパッケージ化することが含まれます。

インクリメンタルリンクを使用しないと、毎回ゼロから作成する必要があります。

インクリメンタルリンクは、小さな変更を加えて再コンパイルするときに、リンカーが既存のexe/dllを簡単に更新できるようにexe/dllをリンクします。

したがって、インクリメンタルリンクを使用すると、プロジェクトのコンパイルとリンクが高速化されます。

実行時の唯一の効果は、exe/dllをわずかに大きく、遅くする可能性があることです。ここで説明します。

http://msdn.Microsoft.com/en-us/library/4khtbfyf.aspx

編集:Loganが述べたように、インクリメンタルリンクは link time code generation と互換性がないため、パフォーマンスの最適化が失われます。

開発をスピードアップするためにデバッグビルドにインクリメンタルリンクを使用したい場合がありますが、ランタイムパフォーマンスを改善するためにリリースビルドではインクリメンタルリンクを無効にすることができます。

遅延ロードされたDLLはあなたが考えているものかもしれません:

http://msdn.Microsoft.com/en-us/library/151kt790.aspx

114
Saxon Druce

また、非常に重要なことは、Edit&Continue-コードを編集し、再起動せずにその場で再コンパイルすることができます。

したがって、リリースビルドではなく、デバッグビルドを使用するのは良いことです。

14
Cavaler