鉴于以下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