4

Visual Studio C/C++ プロジェクトでは、"プロパティ ページ | C/C++ | 最適化" でコンパイラの最適化設定を簡単に変更できます。たとえば、/O2 や /O3 などのさまざまな最適化レベルや、「フレーム ポインターの省略」などの高度な最適化を提供する場合があります。

ただし、Visual Studio の C# プロジェクトで対応する UI を簡単に見つけることができません。私が見つけることができるのは、最適化をオフにすることだけです。「コードを最適化する」チェックボックスしかありません。

C# ユーザーは、C/C++ のような詳細なコンパイラの最適化を制御できますか? コマンド ラインでコンパイラ オプションを指定する必要がありますか?

代替テキスト

4

3 に答える 3

9

C# コードの最適化の多くは、C# コンパイラではなく JIT コンパイラ レベルで行われます。基本的にCやC++のような細かい設定はありません。

GC 戦略など、微調整できるランタイムのパフォーマンス関連の要素がいくつかありますが、大したことではありません。

コマンドラインからベンチマークテストなどを作成するときは、次のようなものを使用する傾向があります。

csc /o+ /debug- Test.cs

(一致する pdb ファイルの存在が、おそらくスローされる例外のコストの点で、パフォーマンスに違いをもたらすのを見たと思います。したがって、切り替え...しかし、debug-は間違っている可能性があります。)

編集:最適化の各ビットがもたらす違いを確認したい場合は、興味深いことが判明する可能性のあるアプローチが1つあります。

  • 最適化の有無にかかわらず同じコードをコンパイルする
  • ILモードでildasmまたはReflectorを使用して、違いを確認してください
  • 同じ変更を 1 つずつ手動で (ilasm を使用して) 適用し、それぞれの変更量を測定します。
于 2010-07-12T06:01:42.527 に答える
4

AFAIK C# コンパイラには、そのような詳細な最適化プロパティはありません。おそらく、最適化が有効または無効になっています。


http://msdn.microsoft.com/en-us/library/6s2x2bzy.aspx

私は2つだけ見つけました:

  • /filealign出力ファイルのセクションのサイズを指定します。

  • /optimize最適化を有効/無効にします。

于 2010-07-12T05:55:25.193 に答える