Possible Duplicate:
Why defining class as final improves JVM performance?




我的项目中有以下课程:

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方法是否比公共领域更快?是否可以添加其他修饰符?等等。)

最佳答案

我发现,当我使课程最终定稿时,代码的运行速度明显加快。这是为什么?


我认为这是因为基准测试方法存在缺陷。

假设您使用的是最新的Hotspot JRE,那么JIT编译器足够聪明,以至于类上的final修饰符不会对性能产生影响...除非您在应用程序中实际使用了该类的子类。

如果需要确认,请发布方法的详细信息,包括基准代码和基准结果。

10-07 13:39