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