在 Java 中过度使用 get() 是否效率低下?
Is using get() excessively in Java inefficient?
我想知道在对象上过度使用 get() 或将 get() 的 return 存储在变量中并使用它是否更有效。例如,这样做会不会更有效率:
someObject.setColor(otherObject.getColor().r, otherObject.getColor().g,
otherObject.getColor().b);
或者将它存储在这样的变量中
Color color = otherObject.getColor();
someObject.setColor(color.r, color.g, color.b);
选项 1:按照示例 1 编写代码。
- java 运行时可能会也可能不会优化代码(将其变成类似于示例 2 的代码)
- 更难阅读
选项 2:按照示例 2 编写代码。
- 不依赖于 java 运行时的优化
- 更容易阅读
根据我的经验,运行时差异可以忽略不计(如果不在一个巨大的循环中执行,则无法衡量差异),但编写清晰易懂的代码才是最重要的。
示例#2
Color color = otherObject.getColor();
someObject.setColor(color.r, color.g, color.b);
您只是在创建对原始对象的引用,因此您没有使用任何可观的 "extra" 内存。加上它更具可读性,因此 +1 例如#2
我想知道在对象上过度使用 get() 或将 get() 的 return 存储在变量中并使用它是否更有效。例如,这样做会不会更有效率:
someObject.setColor(otherObject.getColor().r, otherObject.getColor().g,
otherObject.getColor().b);
或者将它存储在这样的变量中
Color color = otherObject.getColor();
someObject.setColor(color.r, color.g, color.b);
选项 1:按照示例 1 编写代码。
- java 运行时可能会也可能不会优化代码(将其变成类似于示例 2 的代码)
- 更难阅读
选项 2:按照示例 2 编写代码。
- 不依赖于 java 运行时的优化
- 更容易阅读
根据我的经验,运行时差异可以忽略不计(如果不在一个巨大的循环中执行,则无法衡量差异),但编写清晰易懂的代码才是最重要的。
示例#2
Color color = otherObject.getColor();
someObject.setColor(color.r, color.g, color.b);
您只是在创建对原始对象的引用,因此您没有使用任何可观的 "extra" 内存。加上它更具可读性,因此 +1 例如#2