我需要优化这个非常小但令人讨厌的功能。
unsigned umod(int a, unsigned b)
{
while(a < 0)
a += b;
return a % b;
}
在你喊出“你不需要优化它”之前,请记住,这个函数在整个程序生命周期中被调用了 50%,因为对于最小的测试用例基准,它被调用了 21495808 次。
该函数已被编译器内联,因此请不要添加 inline
关键字。
最佳答案
这样可以避免循环:
int tmp = a % b;
if (tmp < 0) tmp += b;
注意 a 和 b 都需要签名。
关于c++ - 无符号模数 : alternative approach?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2323516/