为什么反思慢?

bre*_*ish 24 java reflection performance

是因为我们应该加载类(string例如),创建实例,然后搜索适当的方法,打包参数,然后只调用方法?所以大部分时间花在这些操作上而不是对象上的显式方法调用,对吧?

Jon*_*eet 31

每次使用反射时,每次采取步骤都需要进行验证.例如,当你调用一个方法时,它需要检查目标是否实际上是方法的声明者的一个实例,你是否有正确数量的参数,每个参数是否是正确的类型,等等.

绝对没有内联或其他性能技巧的可能性.

如果您按名称查找类型或方法,那么最多只需要进行简单的地图查找 - 每次执行时都会执行,而不是在JIT时执行一次.

基本上还有很多事要做.然而,反射已经变得比以前快得多......如果你发现它太慢了,你可能会过度使用它.


Tor*_*mod 6

作为Jon Skeet上面答案的附录(我需要更多的声誉才能发表评论.):

反射取决于可用的CPU资源; 如果您的应用程序问题很慢,反射将无法解决任何问题,只是让它变慢.

就像Java本身一样,反思也不再缓慢 - 它更像是一个古老的谣言;)