我的项目中有以下课程:
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
的地方。
我发现当我创建课程final
时,代码运行得更快。那是为什么?
我可以在这个类中做些什么来优化这个类,特别是主构造函数吗?
(例如,getter / setter比公共字段更快?我可以添加其他修饰符吗?等等。)
答案 0 :(得分:1)
我发现当我上课时,代码运行得更快。那是为什么?
我认为这是因为您的基准测试方法存在缺陷。
假设您正在使用最近的Hotspot JRE,那么JIT编译器足够聪明,类上的final
修饰符不会对性能产生影响......除非您在应用程序中实际使用该类的子类
如果您想要确认,请发布您的方法的详细信息,包括基准代码和基准测试结果。
答案 1 :(得分:0)
声明类final会直接影响JVM的性能。最终的类和方法在加载到JVM后可以内联,因为在那时JVM肯定知道该方法是最终的。因此,即时Java编译器可能会有性能提升。
您可以查看此处提供的链接以获取更多详细信息:http://www.javaperformancetuning.com/tips/final.shtml