什么更快? " 5%2 == 0"或"不是5%2"

时间:2015-01-19 16:27:26

标签: python python-2.7

我尝试使用timeit和time.clock(),但我的电脑速度不一致,我找不到哪个更快,如果这个问题已经存在,那么我道歉但我找不到它。

3 个答案:

答案 0 :(得分:2)

最简单的方法是实际计时,使用python 2.7 not 5 % 2的速度一直稍快:

In [1]: timeit 5 % 2== 0
10000000 loops, best of 3: 25.6 ns per loop

In [2]: timeit not 5 % 2
10000000 loops, best of 3: 24.5 ns per loop

使用按位和:

In [7]: timeit not 5 & 1
100000000 loops, best of 3: 19 ns per loop

In [8]: timeit 5 & 1 == 0
10000000 loops, best of 3: 30.1 ns per loop

答案 1 :(得分:1)

通过检查数字的最低有效位,可以快速执行测试%2(即奇数/均匀度)。 (使用逻辑AND执行此操作:(n & 1))。你很难击败它。

但任何潜在的性能提升都可能在Python中被削弱,因此如果只是在您的判断中,性能增益超过了表达式的混淆效果,那么在C和C ++中可能很难陌生与你合作的人。

答案 2 :(得分:0)

我相信第二个版本(not 5 % 2)更快,因为一元not运算符比比较运算更快。