如果Java中的反射按顺序降低了执行速度,那么为什么还有那么多框架使用它呢?



根据我的理解,使用Java反射API会按顺序减慢代码的执行速度。但后来我看到它被用在Java世界的很多地方。举几个例子:

  • 注释
  • Spring框架(AOP)
  • Hibernate
  • MyBatis

这意味着有一些关于java反射(又名优化技术)的事实,我错过了。有什么建议吗?

要点:因为他们别无选择

Java不是动态语言,所以这些框架提供服务的唯一方式就是通过反射。

第二,请注意,这些框架所做的大多数反射工作只在初始化期间发生一次,因此运行时性能不会受到影响。

关于反射性能

我注意到有一个区别总是被混淆:

  1. 反射查找成员;
  2. 反射成员访问(调用/读/写)。

1号慢(这是"订单")你提到);第二种方式的速度得到了显著提高,现在只比本地访问慢几倍。

作为一般规则,性能问题应该通过分析来解决。撇开反射性能的主要改进不谈,所有这些框架都强调在启动时(或者在延迟初始化的情况下)进行一次性查找。在使用它们的企业应用程序中,这并不重要。只要对invoke进行优化,大部分的惩罚就会消失。

相关内容

  • 没有找到相关文章

最新更新