朋友们。 我正在使用PAWN语言(与C类似)编写一些代码,但是我需要优化运行时间。 所以我不想在这里尝试使用按位运算。 我可以对整数进行四舍五入,但是我需要重写它以节省一些时间。
有人可以解释如何将这些操作转换为按位操作吗,为什么? 如果他们做的完全一样,他们如何优化程序的运行时间?
感谢您的帮助!
stock round(num)
{
new rem = num % 10;
return rem >= 5 ? (num - rem + 10) : (num - rem);
}
答案 0 :(得分:1)
(num + 5) / 10 * 10
将很难被击败:检查程序集(尤其是除法),如果编译器判断它们更快,则让编译器优化为按位运算。您的版本有一个分支,可能会导致管道在错误的分支预测基础上转储。