以下Java代码片段仅用于说明我的问题。
// Take a value (0 - 1) and
// return a screen pixel value.
public int toScreen1(float in){
int visibleHeight = getSreenHeight() - getTop() - getBottom();
float pixelOffset = visibleHeight * in;
int screenPixel = (int) (visibleHeight - pixelOffset + getTop());
return screenPixel;
}
public int toScreen2(float in){
return (int) (getSreenHeight() - getTop() - getBottom() -
((getSreenHeight() - getTop() - getBottom()) * in) +
getTop());
}
public int toScreen3(float in){
int screenHeight = getSreenHeight();
int top = getTop();
int bottom = getBottom();
int o = (int) (screenHeight - top - bottom -
((screenHeight - top - bottom) * in) +
top);
return o;
}
他们都做同样的事情,但toScreen2
为了分配一些变量而牺牲了可读性。这会对速度产生很大影响吗?或者,由于变量仅在方法中使用,编译器是否足够智能以使这些变量等效? toScreen3
有目的地分配变量以避免多个方法调用。同样,无论使用哪种方法,速度会对编译器产生什么样的速度影响?有人能指出我的文档方向,它会告诉我Java编译器做了哪些优化以及我应该考虑什么?