为什么Math.max在Java中如此昂贵?

Kat*_*lon 3 java math

我想做以下事情

int sum = x+y;
sum = Math.max(sum,x);
Run Code Online (Sandbox Code Playgroud)

但是这行代码往往需要更长的时间

int sum = x+y;
if(x>sum)sum=x;
Run Code Online (Sandbox Code Playgroud)

我希望这不是不恰当的问题,但有人可以解释为什么会这样吗?

我已经查看了源代码,所有Java都在做

return (a >= b) ? a : b;
Run Code Online (Sandbox Code Playgroud)

roe*_*gol 11

也许是因为Java的Math类是第一次像任何其他Singleton或类似的东西一样被创建,因为在此之前没有人使用它,比如类加载器操作.