.Netのパフォーマンスと最適化について数か月でプレゼンテーションを行っています。不要な最適化のサンプルをいくつか提供したいと思いました。これは、とにかくコンパイラーによって実行されます。
コンパイラが実際にコードの前後でどのような最適化を実行できるかについての説明はどこにありますか?
.Netのパフォーマンスと最適化について数か月でプレゼンテーションを行っています。不要な最適化のサンプルをいくつか提供したいと思いました。これは、とにかくコンパイラーによって実行されます。
コンパイラが実際にコードの前後でどのような最適化を実行できるかについての説明はどこにありますか?
これらのリンクをチェックしてください
MSIL 1に関するこの本もチェックしてください。Microsoft中間言語:C#とVB.NETの比較/ Niranjan Kumar
「とにかくコンパイラによって行われること」の例よりもさらに良いと思うのは、開発者がパフォーマンスの向上をもたらすと想定している「最適化」をコンパイラが実行しないシナリオの例ですが、実際には、しません。
たとえば、開発者は、値をローカルにキャッシュするとパフォーマンスが向上すると想定することがありますが、実際には、スタックに値を1つ少なくすることによる節約が、インライン化できるフィールドアクセスのごくわずかなコストを上回ります。
または、開発者は、メソッド呼び出しを「強制的にインライン化」する(基本的には呼び出し自体を取り除き、コピー/貼り付けされたコードに置き換える)ことは価値があると考えるかもしれませんが、実際にはメソッド呼び出しをそのままにしておくとインライン化されますコンパイラーは、それが理にかなっている場合にのみ(インライン化の利点がコードサイズの増加を上回っている場合)。
もちろん、これは一般的な考え方にすぎません。指摘できる具体的なコードサンプルはありません。しかし、あなたがそれらを探すならば、多分あなたはいくつかを探し出すことができます。