Pet*_*háč 5 java performance casting floor
我正在查看我的代码,希望提高其性能,然后我看到了这个:
int sqrt = (int) Math.floor(Math.sqrt(n));
Run Code Online (Sandbox Code Playgroud)
哦,好吧,我真的不需要调用Math.floor,因为从Math.sqrt(n)返回的强制转换也会有效地对数字进行拼接(因为sqrt永远不会返回负数).所以我去了Math.floor的电话:
int sqrt = (int) Math.sqrt(n)
Run Code Online (Sandbox Code Playgroud)
坐下来,自满地看着代码运行并执行大约10%!比以前的版本更糟糕.这令我感到震惊.任何人的想法?
Math.floor javadocs:"返回小于或等于参数且等于数学整数的最大(最接近正无穷大)double值."
在我的情况下编辑n很长.任何机会cast-floor-sqrt都会生成与cast-sqrt不同的int?我个人不明白为什么会这样......所有涉及的数字都是积极的.