【发布时间】:2009-01-13 19:22:43
【问题描述】:
一个相关的帖子here 在 Java 中几乎确立了反射作为性能猪。这也适用于 CLR 吗? (C#、VB.NET 等)。
编辑:在反射方面,CLR 与 Java 相比如何?是否曾经进行过基准测试?
【问题讨论】:
标签: java reflection clr performance
一个相关的帖子here 在 Java 中几乎确立了反射作为性能猪。这也适用于 CLR 吗? (C#、VB.NET 等)。
编辑:在反射方面,CLR 与 Java 相比如何?是否曾经进行过基准测试?
【问题讨论】:
标签: java reflection clr performance
我并不真正关心使用反射本身的对象的实例化性能,而是方法的实际性能等等,因为这些毕竟是我将从类中使用的东西。
当然,实例化需要很多时间,如链接的帖子中所示,但由于您很可能使用对象的方法而不是仅仅实例化它,因此您不必太担心反射性能 - 只要您没有通过调用反射的Method 对象来进行方法调用!
除了您只需要对象的一个反射实例之外,如果您需要创建更多副本,请使用.clone() 和其他巧妙的技巧。
【讨论】:
是的,.NET 中的反射也是一项性能密集型操作,因为它需要查询程序集中的元数据表。
【讨论】:
值类型的 Equals 的默认实现是使用反射实现的。它可以工作,但是速度很慢,并且很容易实现特定版本,这要快得多(问题是您还必须实现 GetHashCode)。当然,快多少取决于实际的价值类型,但我在这里看到了一些巨大的提升。
【讨论】: