ここの関連記事では、Java のリフレクションをパフォーマンス ホッグとして確立しました。それはCLRにも当てはまりますか?(C#、VB.NET など)。
編集:リフレクションに関しては、CLR は Java とどのように比較されますか? それはベンチマークされたことがありますか?
ここの関連記事では、Java のリフレクションをパフォーマンス ホッグとして確立しました。それはCLRにも当てはまりますか?(C#、VB.NET など)。
編集:リフレクションに関しては、CLR は Java とどのように比較されますか? それはベンチマークされたことがありますか?
リフレクション自体を使用したオブジェクトのインスタンス化のパフォーマンスについてはあまり気にしませんが、メソッドなどの実際のパフォーマンスは、とにかくクラスから使用するものであるためです。
リンクされた投稿に見られるように、確かにインスタンス化には多くの時間がかかりますが、オブジェクトを単にインスタンス化するのではなく、オブジェクトのメソッドを使用している可能性が高いため、リフレクションのパフォーマンスについてあまり心配する必要はありません。リフレクトされたMethod
オブジェクトを呼び出してメソッド呼び出しを行っていません!
オブジェクトの反映されたインスタンスが 1 つだけ必要なだけでなく、.clone()
さらにコピーを作成する必要がある場合は、その他の巧妙なトリックを使用します。
ええ、.NET でのリフレクションは、アセンブリ内のメタデータ テーブルをクエリする必要があるため、パフォーマンスが集中する操作でもあります。
値型の Equals の既定の実装は、Reflection を使用して実装されます。それは機能しますが、非常に遅く、特定のバージョンを実装するのは簡単で、はるかに高速です (問題は、GetHashCode も実装する必要があることです)。もちろん、実際の値のタイプによってどれだけ速くなるかは異なりますが、ここでいくつかの大幅な向上を見てきました。