実行時間のパフォーマンスをコードにクラスを用いた反射のに対し、"普通"のクラス

StackOverflow https://stackoverflow.com/questions/1846587

質問

の実行時間(実行時のコードを行うクラスを読み反射 同一の 同コードのクラスは予告なく変更する場合があり、新しいキーワード?

うそうです。でも話す同僚の方に反射型コードは常に遅くなります。

私の見るとを問わずどのようにクラスはもともとロード/作成されると、性能は同一でなければならないのJITコンパイラなどのようにクラスがロードされます。

私は正しいのですか。もしかしたら私を担当する参考文献では明確です。

(注:伝える事が出来るっての性能 の作成 クラスを使用反射に対する新しいキーワードとなります。というのは、実際のコード方法のクラスで作成されます。)

役に立ちましたか?

解決

もよりますけれど、実行しま;-p

一度だ 内部 の方法にログインしたい:通常のGITなどに適用され、通常通り(ご注意セキュリティチェックする可能性を 少し 遅くまでも信頼されない).

めに必要なもの 呼び出し 一部のコードの動的オブジェクト:

  • できればキャストのオブジェクトのインタフェースやベースのクラスは静的に、その同一でなければならない。
  • こん可能ですが、できる結合する特定の業務について代表者(例えば Func<string,int>, 通 Delegate.CreateDelegateであることを検証することがほぼ快速としても便利です。
  • だかよ DynamicInvoke(), ですかtreacle。
  • 中4.0, dynamic を提供する場合があり、途中ハウスで鴨-タイピングキャッシュ最適化されたタイプです。

い:こんにちはアクセスです。

他のヒント

はい、一度パフォーマンスが同じであるロードされます。

反射のパフォーマンスの低下は、アセンブリからメタデータの読み取りにバインドされているが、実行時間がまったく同じになります。インスタンスが作成されていて、あなたはそれへの参照を持っていたら、それは、ですが、それは(JITのコンパイルとすべてを含む)あなたが持っている他のクラスとして動作します。

それはあなたがリフレクションを使用する方法に依存します。それは常に遅くなりますが、あなたは、実行時にファクトリメソッドを作成するために発するILを使用する場合には時間差が本当に小さなことができます。 あなたは、単純なActivator.CreateInstanceを使用する場合、それはそんなに遅くなります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top