嘿 friend 们。 我正在使用 PAWN 语言(类似于 C)编写一些代码,但我需要优化运行时间。 所以我不想在这里尝试使用按位运算。 我的函数可以对整数进行舍入,但我需要重写它以减少一些时间。
有人可以解释一下如何将这些运算转换为按位运算以及为什么吗? 如果他们做的完全一样,他们如何优化程序的运行时间?
感谢您的帮助!
stock round(num)
{
new rem = num % 10;
return rem >= 5 ? (num - rem + 10) : (num - rem);
}
最佳答案
(num + 5) / 10 * 10
很难击败:检查汇编(尤其是除法),如果编译器认为按位运算更快,则让编译器优化为按位运算。您的版本有一个分支,可能会导致管道转储错误的分支预测。
关于c - 使用按位运算编写 round() 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54441806/