【发布时间】:2013-06-26 04:26:48
【问题描述】:
我有课
class A {
private int x;
public void setX(...){...}
public int getX(){return x;}
}
class B {
int y;
public void setY() {
//Accessing x of A, assume I already have object of A
if(a.getX() < 0) {
y = a.getX();
}
}
}
class C {
int y;
public void setY() {
//Accessing x of A, assume I already have object of A
int tmpX = a.getX();
if(tmpX < 0) {
y = tmpX;
}
}
}
哪种编码方式更好?我在 B 类或 C 类中访问 x of A 的方式?
【问题讨论】:
-
编译器很聪明,相信他。它会将它们转换为相同的字节码。
-
两者都和我差不多。
-
在考虑微优化之前,您应该先看看“JIT(即时)编译器做了什么”stackoverflow.com/questions/95635/…。换句话说:只要您没有真正的性能问题,您应该更喜欢清晰的设计而不是代码优化。
-
这个问题已经被问到并回答了here。
-
@gaganbm - 编译器生成与第二种情况相同的第一种情况是非法的。如果方法调用出现在源代码中,则必须对其进行评估。毕竟,不能保证 getX 每次都返回相同的值,也不能保证 getX 不会修改 a 中的某些内部值。
标签: java performance