[英]Java - interface/base class reference - performance
直接使用该类可能更快,从不慢。 如果JVM看到一个具体的类,它就会知道“谁来调用”。 不一定完全可能有子类,除非该类是最终的。 可能有一些JVM尚未看到的子类,后来加载。
对于最终类,可以将方法调用优化为本机CALL指令。 这是一个微不足道的案例。
如果类不是最终的,但是还没有加载子类,那么在开头的某个地方只需要一个额外的检查。 当检查失败时,JVM必须抛弃这种过度乐观的编译方法并重新编译(没什么大不了的)。
当有子类时,一切都取决于在给定的调用站点上实际遇到多少子类。 如果只有一个,那么快速检查就足以验证给定的类是否是预期的类(通过将此测试移出循环等,这个开销变得可以忽略不计)。
有更多候选人的案件显然较慢(Google为双形和巨型)。
显然,没有什么可以通过接口更快地进行呼叫。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.