1. ホーム
  2. c#

[解決済み] デバッグとリリースの性能比較

2022-05-15 14:13:23

質問

次のような段落がありました。

"Visual Studio でコードをコンパイルするときに IDE で Debug vs. Release を設定しても、パフォーマンスにはほとんど差がありません...生成されるコードはほとんど同じです。C#コンパイラは最適化を行いません。C#コンパイラはILを吐き出すだけで、実行時にすべての最適化を行うのはJITerです。JITerにはDebug/Releaseモードがあり、これはパフォーマンスに大きな違いをもたらします。しかし、プロジェクトのデバッグまたはリリース設定を実行するかどうかではなく、デバッガーが接続されているかどうかが鍵になります。

ソースは ここで で、ポッドキャストは こちら .

どなたか、これを実際に証明できるマイクロソフトの記事を紹介していただけませんか?

ググる " C# のデバッグとリリースのパフォーマンス という結果が返ってくることがほとんどです。 デバッグは多くのパフォーマンス ヒットがある "、" リリースは最適化されています "、および " デバッグを本番環境にデプロイしない "です。

どのように解決するのですか?

部分的に正しい。デバッグ モードでは、コンパイラーはすべての変数に対してデバッグ シンボルを発行し、コードをそのままコンパイルします。リリースモードでは、いくつかの最適化が含まれます。

  • 未使用の変数はまったくコンパイルされません。
  • ループ変数が不変であることが証明された場合、コンパイラによってループから取り除かれることがあります。
  • debugディレクティブの下で書かれたコードは含まれない、など。

あとはJIT次第です。

最適化の全リスト はこちら 提供 エリック・リッパート .