gpt4 book ai didi

c++ - 整数乘法和除法之间意外的明显性能差异

转载 作者:搜寻专家 更新时间:2023-10-31 00:14:29 25 4
gpt4 key购买 nike

我正在实现一个简单的二进制搜索来查找整数的平方根。代码运行正确。但是如果我将 if 中的条件从 mid * mid > x 更改为 mid > (x/mid) 那么一切都很好。

int sqrt(int x) {
if(x < 0) return -1;
if(x <= 1) return x;
int l,r,mid,ans;
l = 0;
r = x;
while(l <=r ){
mid = (l + r) / 2;

if((mid * mid) == x) return mid;

if((mid * mid) > x ){ //<===== here if I change to mid > (x / mid)
r = mid - 1;

}else{
l = mid + 1;
ans = mid;
}
}

return ans;
}

};

因此我得出结论,除法比乘法快。但到目前为止,我所做的研究都表明乘法比除法快。

最佳答案

mid > (x / mid) 

优于

(mid * mid) > x

因为你避免了整数溢出。

关于c++ - 整数乘法和除法之间意外的明显性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22956226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com