可能重复:
为什么将类定义为final可以提高JVM性能?
我在我的项目中有以下课程:
public final class LinkNode
{
public int value;
public LinkNode next;
public LinkNode(int value, LinkNode next)
{
this.value = value;
this.next = next;
}
public LinkNode(int value)
{
this(value, null);
}
}
我的代码中最慢的一行(总体上相当复杂)是我构建新的LinkNode
s的地方。
我发现,当我创建类final
时,代码运行速度明显更快。为什么?
在这个类中,我还能做些什么来优化这个类,特别是主构造函数吗?
(例如,getter/setter比公共字段快吗?我可以添加其他修饰符吗?等等。)
我发现,当我将该类设置为final时,代码运行速度明显更快。为什么?
我认为这是因为你的基准测试方法存在缺陷。
假设您使用的是最新的Hotspot JRE,JIT编译器足够聪明,类上的final
修饰符应该不会对性能产生影响。。。除非您在应用程序中实际使用该类的子类。
如果您想要确认,请发布方法的详细信息,包括基准代码和基准结果。
声明类final直接影响JVM的性能。最终类和方法可以在加载到JVM后内联,因为在这一点上JVM肯定知道该方法是最终的。因此,即时Java编译器的性能可能会有所提高。
您可能需要查看此处提供的链接以了解更多详细信息:http://www.javaperformancetuning.com/tips/final.shtml