5/4
・The Performance Benefits of NGen
NGenを使ったパフォーマンス改善の話。.NET1.0/1.1のころはNGenによってJITのコストは下げられましたが、生成されるコードがJITに比べて幾分遅かったようです。.NET2.0ではそれが改善されたようですが、デメリットもありますので、その辺は記事を参照ください。
・Let The CLR Find Bugs For You With Managed Debugging Assistants
同じくMSDNマガジンから。
Mangaed Debugging Assistantsとは
マネージ デバッグ アシスタント (MDA) は、共通言語ランタイム (CLR: Common Language Runtime) と連携してランタイム状態に関する情報を提供するデバッグ支援ツールです。MDA は、これ以外の方法ではトラップできないランタイム イベントに関する情報メッセージを生成します。MDA を使用すると、マネージ コードからアンマネージ コードへの遷移時に発生する、検出が難しいアプリケーション バグを分離できます。MDA を有効にするには、Windows レジストリにキーを追加するか、環境変数を設定するか、またはアプリケーション構成設定を使用します。一部の MDA については、アプリケーションの構成ファイルで追加の構成設定を個別に設定できます。この構成ファイルはランタイムの読み込み時に解析されるため、MDA は、マネージ アプリケーションが起動する前に有効にする必要があります。MDA は、既に起動しているアプリケーションに対して有効にできません。
以上、MSDNライブラリから引用。
また、
MDA には、レジストリ キーを追加しなくても、デバッガにアタッチされているアプリケーションを実行すると既定で有効になるものがあります。このようなアシスタントには、PInvokeStackImbalance や InvalidApartmentStateChange などがあります。
とあるように、デバッグ時に自動的に機能するものもあったりします。なので、デバッグだと遅いとか動作が異なるということもあるでしょう。