2

ここの関連記事では、Java のリフレクションをパフォーマンス ホッグとして確立しました。それはCLRにも当てはまりますか?(C#、VB.NET など)。

編集:リフレクションに関しては、CLR は Java とどのように比較されますか? それはベンチマークされたことがありますか?

4

3 に答える 3

3

リフレクション自体を使用したオブジェクトのインスタンス化のパフォーマンスについてはあまり気にしませんが、メソッドなどの実際のパフォーマンスは、とにかくクラスから使用するものであるためです。

リンクされた投稿に見られるように、確かにインスタンス化には多くの時間がかかりますが、オブジェクトを単にインスタンス化するのではなく、オブジェクトのメソッドを使用している可能性が高いため、リフレクションのパフォーマンスについてあまり心配する必要はありません。リフレクトされたMethodオブジェクトを呼び出してメソッド呼び出しを行っていません!

オブジェクトの反映されたインスタンスが 1 つだけ必要なだけでなく、.clone()さらにコピーを作成する必要がある場合は、その他の巧妙なトリックを使用します。

于 2009-01-13T19:50:58.293 に答える
0

ええ、.NET でのリフレクションは、アセンブリ内のメタデータ テーブルをクエリする必要があるため、パフォーマンスが集中する操作でもあります。

于 2009-01-13T19:24:20.330 に答える
0

値型の Equals の既定の実装は、Reflection を使用して実装されます。それは機能しますが、非常に遅く、特定のバージョンを実装するのは簡単で、はるかに高速です (問題は、GetHashCode も実装する必要があることです)。もちろん、実際の値のタイプによってどれだけ速くなるかは異なりますが、ここでいくつかの大幅な向上を見てきました。

于 2009-01-13T19:31:45.073 に答える