【问题标题】:Write round() function using bitwise operation?使用按位运算编写 round() 函数?
【发布时间】:2019-06-23 19:20:18
【问题描述】:

朋友们。 我正在使用 PAWN 语言(C 类似)编写一些代码,但我需要优化运行时间。 所以我不想在这里尝试使用按位运算。 我有我的函数来舍入整数,但我需要重写它以减少一点时间。

有人能解释一下如何将这些操作转换为按位操作吗?为什么? 如果他们完全一样,他们如何优化程序的运行时间?

感谢您的帮助!

stock round(num)
{
    new rem = num % 10;
    return rem >= 5 ? (num - rem + 10) : (num - rem);
}

【问题讨论】:

标签: c optimization bitwise-operators bit-shift


【解决方案1】:
(num + 5) / 10 * 10

很难被击败:检查程序集(尤其是除法),如果编译器判断它们更快,则让编译器优化按位运算。您的版本有一个分支,这可能会导致管道转储错误的分支预测。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    相关资源
    最近更新 更多