Java编译器有多聪明,它会做出哪些优化?

时间:2017-03-24 21:04:46

标签: java optimization

以下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编译器做了哪些优化以及我应该考虑什么?

0 个答案:

没有答案