.NET リフレクションの「コスト」とは何ですか? [重複] 質問する

.NET リフレクションの「コスト」とは何ですか? [重複] 質問する

重複の可能性あり:
.NET リフレクションにはどれくらいのコストがかかりますか?

私は現在、リフレクションが私の親友であるというプログラミングの考え方を持っています。私は、厳密なインターフェースではなく「緩い実装」を可能にするコンテンツの動的読み込みや、多くのカスタム属性にリフレクションをよく使用します。

リフレクションを使用する際の「実際の」コストはいくらですか?

テーブル定義のすべてのプロパティに対する独自の LINQ 以前の DAL オブジェクト コードなど、頻繁にリフレクションされる型にキャッシュされたリフレクションを持たせる作業は価値があるでしょうか。

キャッシュメモリのフットプリントはリフレクション CPU の使用量を上回りますか?

ベストアンサー1

リフレクションでは、大量の型メタデータをロードして処理する必要があります。これにより、メモリのオーバーヘッドが大きくなり、実行速度が遅くなる可能性があります。この記事プロパティの変更は約 2.5 ~ 3 倍遅くなり、メソッドの呼び出しは 3.5 ~ 4 倍遅くなります。

ここに素晴らしいMSDN記事リフレクションを高速化する方法とオーバーヘッドがどこにあるかを概説しています。詳細を知りたい場合は、ぜひ読んでみてください。

また、リフレクションによってコードに複雑さが加わり、コードがかなり混乱し、作業が難しくなることもあります。スコット・ハンセルマンリフレクションを使用すると、解決するよりも多くの問題が発生することが多いと考えています。特に、チームのほとんどが初心者の開発者である場合に当てはまります。

動的な動作を多く必要とする場合は、DLR (Dynamic Language Runtime) を検討したほうがよいでしょう。.NET 4.0 で新しい変更が加えられたので、その一部をソリューションに組み込めるかどうか検討してみるとよいでしょう。VB と C# の dynamic のサポートが追加されたため、動的コードの使用が非常にエレガントになり、独自の動的オブジェクトの作成がかなり簡単になりました。

幸運を。

編集:スコットのサイトをもう少し調べてみたら、これを見つけたポッドキャストよく考えてみると、まだ聴いていませんが、聴いてみる価値はあるかもしれません。

おすすめ記事