.NET ILは、ほとんどすべてを行うための唯一の方法があることを、実際のCPUアセンブリ言語(x86の、など)に比べて非常にシンプルです。つまり、良いILはないので、より良いILでパフォーマンスを向上させることはできません。 (あなたはデバッグビルドを行い、意図的に次善のILを生成しないと仮定しましょう。)
.NETのパフォーマンスは、JIT-TERのより多く依存します。とにかく、高水準の言語、JIT-ting、GC-ingなどの全体的なアイデア。パフォーマンスの料金があるので、ILのわずかな最適化はそれほど重要ではありません。
なぜILを使用しているのですか?コードを生成するときです(XSLT、正規表現、または動的プロキシをコンパイルするときなど)。文字列バッファにC#コードを作成してコンパイルするよりも、ILで行うほうがはるかに高速です。それだけです。 ILが必須であるとき
別にその場でコードを生成する機能から、私はILは、他の利点を持っているとは思いません。 C#はそのような機能豊かで進化し続ける言語ですが、それを使用していないのは夢中です。 ILで働くことは罰であろう。できるだけ良いILにC#をコンパイルすることができます。
最新のC#のすべての種類の機能を自由に使用することもできます。ダイナミックのようなものは最高のパフォーマンスを持たないかもしれませんが、パフォーマンスに関してではなく、モダンな機能を使って物事を進めるのに役立ちます。イリノイ州はそれをあなたに与えません。 (もちろん、いくつかの新機能は非同期のようなパフォーマンスを助けますが、アセンブリレベルの最適化とは非常に高いレベルではありません)。
そして、AFAIKではILをC#ファイル。オンザフライで新しいコードを生成することは別として、少なくともVisual Studioではなく、C#からビルドされたアセンブリの変更を含む特定のトリックを除いて、ILをアセンブリにコンパイルすることはできません。
実際に行くとき、本当に悪いです。うまくいけば、決してそこに着くことはできません – BradleyDotNET
そうです。私はその決定につながるベンチマークを見たいと思っています。 – dbarnes
Dapperは、実行時まで知らないタイプのコードを動的に生成する必要があるため、ILを使用します。他の状況ではILを使用すべきではありません。 –