1

重複の可能性:
C# コンパイラの最適化 - 未使用のメソッド

JIT コンパイラは、プログラムが開始された後に実行され、コード (通常はバイトコードまたはある種の VM 命令) をオンザフライで (またはジャストインタイムと呼ばれます)、通常より高速な形式 (通常はホスト CPU のネイティブ) にコンパイルします。指図書。JIT は動的な実行時情報にアクセスできますが、標準コンパイラはそうではなく、頻繁に使用される関数のインライン化などの最適化を行うことができます。

これは、プログラムが最初に実行される前にすべてのコードを機械語にコンパイルする従来のコンパイラとは対照的です.しかし、私の質問は、JITコンパイラは空のメソッドを排除しますか? 誰かが簡潔でわかりやすい説明をしてくれませんか?

4

3 に答える 3

1

そうではありません。現在のプロジェクトに未使用の関数を追加し、exe に dotPeeking を追加してテストしました。それはまだそこにありました。

于 2013-02-03T19:55:34.357 に答える
1

リリース モードでも、最適化をオフに切り替えることができます。したがって、あなたの質問は次のとおりだと思います:プライベートメソッドは最適化モードで削除されますか? そして、答えはノーです。

ここで広く議論されていると思います: C# コンパイラの最適化 - 未使用のメソッド

(PS: タイトルをコピー/貼り付けしただけで、Google で最初のヒットです)

于 2013-02-03T19:55:52.967 に答える
0

この前の質問があなたの質問に答えるかもしれません。コンパイルされていないようですが、未使用のメソッドが呼び出されることはありません。JITは必要に応じてこれらの部分をメモリに取り込むため、これはメモリフットプリントに影響を与えないようです。

于 2013-02-03T19:56:27.067 に答える