最近我和我的团队负责人讨论了使用临时变量与调用getter方法的问题.很长一段时间我认为,如果我知道我将不得不多次调用一个简单的getter方法,我会将它放入一个临时变量然后使用该变量.我认为这在风格和性能方面都会更好.但是,我的主管指出,在Java 4和更新版本中,这有点不正确.他相信使用较小的变量空间,所以他告诉我,调用getter方法的性能命中非常微不足道,而不是使用temp变量,因此使用getter更好.但是,我并不完全相信他的论点.你们有什么感想?
Bil*_*l K 70
永远不要编写性能代码,始终编写可读性代码.让编译器完成工作.
他们可以改进编译器/运行时以更快地运行良好的代码,突然你的"快速"代码实际上减慢了系统的速度.
Java编译器和运行时优化似乎首先解决了更常见/可读的代码,因此您的"优化"代码更有可能在以后完全取消优化,而不是刚刚编写的代码.
TL;博士:
这个答案指的是Java代码"Tricks",就像引用的问题一样.它不是指正确的设计.例如,我编写了一个发现例程来联系B类网络中的每台计算机(64k地址) - 线程不是一个选项,它不是优化,而是软件设计.对ArrayList执行插入排序只是糟糕的编程,将其切换到LinkedList不是优化,这是一个错误修复!
Ran*_*pho 24
你的领导是正确的.在VM的现代版本中,返回私有字段的简单getter被内联,这意味着不存在方法调用的性能开销.
Pau*_*ham 14
不要忘记通过将getSomething()的值赋给变量而不是调用它两次,你假设getSomething()在你第二次调用它时会返回相同的东西.也许这是你所谈论的场景中的一个有效假设,但有时却不是.
tan*_*ens 11
这取决于.如果您想明确表示一次又一次使用相同的值,我会将其分配给临时变量.如果吸气器的召唤有点冗长,我会这样做的myCustomObject.getASpecificValue().
如果代码可读,您将获得更少的错误.所以这是重点.
性能差异很小或不存在.