【问题标题】:Does Java compiler eliminate function calls from getters?Java 编译器是否消除了 getter 的函数调用?
【发布时间】:2012-10-22 15:39:43
【问题描述】:

我能确定吗

private int value;
public int getValue() { return value; }

由编译器编译,方式与

相同
public int Value;

在指令数量和执行时间方面?我的意思是现代编译器是否试图使函数“内联”(c++ 术语)?

【问题讨论】:

  • 顺便说一句,JVM 最多可以内联两个“虚拟”方法,这是静态编译器做不到的。
  • 什么是虚方法?从C++来看,java中的所有方法都是虚的。

标签: java function inline compiler-optimization getter


【解决方案1】:

没有; Java 编译器不会改变这一点。

但是,JITter 可能会。

【讨论】:

  • 确实,JIT 会为您优化它。
  • @Gilberto JIT 不会只在发现需要时优化它吗?鉴于有多种实现和环境,我不敢断言 JIT 将始终优化“简单”的 getter(因此更复杂)。
  • @DaveNewton Java 编程是一种信念的练习:你希望 GC 能够运行,你希望 JIT 能够编译和优化,你希望你编写一次,程序就能到处运行。有信心,兄弟。 ;-)
  • 我在想 JIT 也是一种编译。
猜你喜欢
  • 2018-11-26
  • 2022-01-12
  • 2013-10-15
  • 1970-01-01
  • 2017-06-26
  • 2013-08-06
  • 2017-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多