我有關於JIT優化的問題。 我編了一段簡單的代碼:可以JIT優化這種不必要的呼叫嗎?
class btest
{
static final boolean flag=false;
public final void foo(int x)
{
if(flag) {a=x; b=x*2; c=x*3;}
}
public void bar(int y) {foo(y);}
int a,b,c;
};
flag
設置爲false
所以foo()
完美編譯成空碼 - 剛剛返回。 但bar()
仍然調用它。
JIT是否有可能消除此呼叫? flag
屬於外部類別嗎?
關於
爲什麼只是非最終?最終的變量是不是更加開放的說優化? – hexafraction
@hexafraction它將爲原始最終變量和一些非最終變量執行此操作。 –
所以,你認爲使用條件編譯if -s包裝在方法中(比如我的例子)而不是if -s在頂層,不太方便,可能不太優雅? – ardabro