次の方法で共有


DA0012: リフレクションが頻繁に実行されています

規則 ID

DA0012

[カテゴリ]

.NET Framework の使用

プロファイル方法

サンプリング

Message

リフレクションを使いすぎている可能性があります。これは負荷が高い操作です。

規則の種類

[警告]

原因

System.Reflection メソッド (InvokeMember や GetMember など) または Type メソッド (MemberInvoke など) の呼び出しが、プロファイル データの大きな割合を占めています。可能な場合は、事前バインディングを使用するこれらのメソッドを、依存アセンブリのメソッドに置き換えることを検討してください。

規則の説明

リフレクションは、.NET Framework の柔軟な機能です。この機能は、依存ランタイム アセンブリに対してアプリケーションの遅延バインディングを実行したり、実行時に新しい型を作成して動的に実行する場合に使用できます。ただし、この手法は頻繁に使用したり短いループで呼び出したりすると、パフォーマンスが低下する可能性があります。

詳細については、MSDN にある Microsoft patterns & practices ライブラリの「パフォーマンスとスケーラビリティの向上」で、「第 5 章 「マネージ コード パフォーマンスの向上」」の「リフレクションと遅延バインディング」を参照してください。

警告の調査方法

[エラー一覧] ウィンドウに表示されたメッセージをダブルクリックして、プロファイル データの 関数の詳細ビュー に移動します。System.Type メソッドまたは System.Reflection メソッドの呼び出し関数を調べ、.NET リフレクション API を最も頻繁に使用するプログラムのセクションを見つけます。メタデータを返すメソッドは使用しないでください。アプリケーションのパフォーマンスを重視する場合、状況によっては遅延バインディングの使用と、実行時の動的な型の作成を行わないようにする必要があります。