java - 嵌套获取性能

标签 java

在 Java 中,如果我不断使用嵌套 get 来检索值,是否会影响性能?例如:

String firstname = getOffice().getDepartment().getEmployee().getFirstName();
String lastname = getOffice().getDepartment().getEmployee().getLastName();
String address = getOffice().getDepartment().getEmployee().getAddress();

对比:

Employee e = getOffice().getDepartment().getEmployee();
String firstname = e.getFirstName();
String lastname = e.getLastName();
String address = e.getAddress();

第二个版本会因为“跳跃”更少而更快吗?

最佳答案

这完全取决于 getXYZ 调用的do。如果它们是底层字段的简单访问器,那么不,不是在 HotSpot(Oracle 的 JVM)上,因为如果有任何需要,它们会被优化掉。另一方面,如果他们做任何复杂的工作(遍历 btree 等),那么他们当然必须重复做这些工作(除非 HotSpot 可以向自己证明调用是幂等的,如果代码有任何复杂性变得不太可能)。 (他们重复执行工作是否重要是另一个问题;直到/除非您看到实际的性能问题,否则不要担心。)

但第二个可读性和可维护性更高。这是使用它的更强有力的理由。

关于java - 嵌套获取性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14152065/

相关文章:

Java - 使用大型 Excel 进行读取、处理、写入

java - Clojure/Lein/打包到 jar 里

java - Citrus 框架 - 尝试在 JSON 中使用 validator 会导致 header ACCEPT 出现错误

java - 如何用Java制作图像?

java - 配置@BeforeClass 和@Before 方法的模式

java - 记录重复消息一次

java - Spring Boot 更改数据源以指向 mysql 数据库

java - 如何阅读 JSch 命令输出?

java - 在 Java 中使用冒泡排序对 24 位数组进行排序

java - 由 : org. springframework.beans.BeanInstantiationException 引起