Java 方法调用与使用变量

2022-08-31 17:46:44

最近,我和我的团队负责人讨论了使用临时变量与调用 getter 方法。很长一段时间以来,我一直认为,如果我知道我将不得不多次调用一个简单的getter方法,我会把它放到一个临时变量中,然后使用那个变量。我认为这在风格和性能方面都会更好。但是,我的领导指出,在Java 4和更新的版本中,这在某种程度上是不正确的。他相信使用较小的变量空间,所以他告诉我,与使用临时变量相比,调用 getter 方法的性能影响可以忽略不计,因此使用 getter 更好。然而,我并不完全相信他的论点。你们怎么看?


答案 1

从不为性能而编码,始终为可读性而编码。让编译器完成工作。

他们可以改进编译器/运行时以更快地运行良好的代码,突然之间,您的“快速”代码实际上正在减慢系统的速度。

Java编译器和运行时优化似乎首先解决更常见/可读的代码,所以你的“优化”代码比刚刚写得干净的代码更有可能在以后被取消优化。

注意:

这个答案指的是Java代码“技巧”,就像引用的问题一样,而不是糟糕的编程,可能会将循环级别从O(N)提高到O(N^2)。通常编写干净的 DRY 代码,并等待操作明显花费太长时间才能修复它。除非你是一名游戏设计师,否则你几乎永远不会达到这一点。


答案 2

您的线索是正确的。在 VM 的现代版本中,返回专用字段的简单 getter 是内联的,这意味着方法调用的性能开销不存在。


推荐