相关帖子here几乎已经确立了Java作为一种表现难题的反映。这也适用于CLR吗? (C#,VB.NET等)。
编辑 :在反思方面,CLR与Java相比如何?这是否有过基准测试?
答案 0 :(得分:3)
我不会真正关心使用反射本身的对象的实例化性能,而是关注方法的实际性能等等,因为这些毕竟是我将在课堂上使用的。
当然,实例化会花费很多时间,因为在链接帖子中可以看到,但由于你最有可能使用对象的方法而不是仅仅实例化它,你不应该过多担心反射性能 - 只要你没有通过调用反映的Method
对象来进行方法调用!
除此之外,您只需要一个反映的对象实例,如果您需要创建更多副本,请使用.clone()
和其他聪明的技巧。
答案 1 :(得分:0)
是的,.NET中的反射也是一项性能密集型操作,因为它需要查询程序集中的元数据表。
答案 2 :(得分:0)
使用Reflection实现值类型的Equals的默认实现。它工作正常,但它很慢并且很容易实现特定版本,这要快得多(要抓住你必须实现GetHashCode)。当然,速度取决于实际值类型,但我看到了一些巨大的提升。