鑑於以下Java代碼,JRE優化程序將呼叫Math.max
替換爲max
的呼叫嗎?Java會優化max操作嗎?
未優化的代碼
public static void main(String[] args) {
int max = max(3, 5);
}
public int max(int x, int y) {
if (x < y) {
return y;
}
else {
return x;
}
}
優化代碼
public static void main(String[] args) {
int max = Math.max(3,5)
}
通過調用完全不相關的方法進行優化? –
我想知道它是否足夠聰明以理解'max'函數的功能語義是什麼。如果是,不應該用Math.max或其他等效代碼的調用來代替它嗎? – RouteMapper
它可能夠聰明,但沒有這種智能是免費的(這一切都花費時間)。這種優化是你可以輕鬆完成的事情,編譯器專注於你不能做的事情。有些優化可以通過識別模式來完成,但是識別對特定方法的調用要容易得多......這就是內在函數的含義,請參閱我的答案。 – maaartinus