在Java中,如果我不断使用嵌套的get来检索值,是否会有性能损失?例如:
String firstname = getOffice().getDepartment().getEmployee().getFirstName();
String lastname = getOffice().getDepartment().getEmployee().getLastName();
String address = getOffice().getDepartment().getEmployee().getAddress();
Run Code Online (Sandbox Code Playgroud)
VS:
Employee e = getOffice().getDepartment().getEmployee();
String firstname = e.getFirstName();
String lastname = e.getLastName();
String address = e.getAddress();
Run Code Online (Sandbox Code Playgroud)
第二版会更快,因为它的"跳跃"更少吗?
这完全取决于getXYZ呼叫的作用.如果它们是基础字段的简单访问者,那么不是,而不是HotSpot(Oracle的JVM),因为如果有任何需要,它们将被优化.另一方面,如果他们做任何复杂的工作(遍历btree等),那么当然他们必须反复做这项工作(除非HotSpot可以向自己证明这些调用是幂等的,如果代码有任何复杂性变得不太可能).(重复这项工作是否重要是另一个问题;除非你看到实际的性能问题,否则不要担心.)
但是,第二个是很多更具可读性和可维护性.这是使用它的更有力的理由.
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |