【发布时间】:2014-06-02 21:54:57
【问题描述】:
我有这个代码 here. 这个代码被称为“高效”,因为它比模 3 更有效。
但是为什么模 3 效率低?它不是在下面做同样的操作吗? 模运算的复杂性是什么?
【问题讨论】:
-
你是在说这个问题的评论,上面写着“作弊”吗?
-
如果以下两个都成立,我会惊呆了(a)
x%3==0还不是最有效的,并且(b)编译器不够聪明,无法将其换成如果不是更快的版本 -
如果
x%3与您的方法代码在机器级别上的代码相同,我也会感到惊讶。 -
为了好玩,我刚刚运行了一个快速的微型基准测试,您改进的算法击败
%的唯一情况是n == 0... 对于其他 n 值,您的算法稍慢(n = 3) 对于较大的 n 值,要慢 10 倍... -
如果您链接的代码是正确的,我会感到惊讶:例如
21 = 0b10101所以oddCtr最终将是 3 而evenCtr将是 0。这是否意味着21 不是 3 的倍数???