>>> for s in 'a = 2', 'a = 0', 'a = -2':
timeit('a != 0', s)
timeit('a > 0', s)
0.06030992519848155
0.06666935212976455
0.053299842422489974
0.06516424110179742
0.05866621696540619
0.06685335186756447
然而,这些数字非常接近另一个。所以你只需要从这个答案中去掉一件事:这不重要。在
这些都是微优化。微优化很少对应用程序的实际性能产生任何影响。更有可能的是,应用程序中有上千个其他部分对性能有更大的影响,从而使这种差异可以忽略不计。只有当您确实profiled your application并确认这部分代码是降低应用程序性能的瓶颈时,才应该关心这些事情。但对于这个特殊的代码,我怀疑永远不会是这样。在
当问自己关于不同运算符之间的速度差的问题时,请使用^{} module 来测量。它们同样快:
这是重复了1000万次的比较,如果你重新运行上述测试,你会发现时间可能会有所不同,没有一个是明显的赢家。在
你应该关注的是可读性,而不是速度。一个简单的整数比较将是整个执行速度的一个无穷小的部分,即使是在一个循环中。在
对我来说,
timeit
并没有显示出任何一致的显著差异(假设您使用的是整数)。。。在正如对这个问题的评论中所说的那样,你不应该把重点放在哪个运算符最快上,而应该把重点放在最有意义的运算符上。如果你真的是说“在
a
大于0
时做这个”的话,那就使用>
。做这个比较所花费的时间对整个运行时的贡献很小,所以不必担心哪个操作符更快。。。在如果我们说} module 快速检查自己:
a
是int
,那么此时此刻在我的机器上,相等检查比大于检查稍微快一点。您可以使用^{然而,这些数字非常接近另一个。所以你只需要从这个答案中去掉一件事:这不重要。在
这些都是微优化。微优化很少对应用程序的实际性能产生任何影响。更有可能的是,应用程序中有上千个其他部分对性能有更大的影响,从而使这种差异可以忽略不计。只有当您确实profiled your application并确认这部分代码是降低应用程序性能的瓶颈时,才应该关心这些事情。但对于这个特殊的代码,我怀疑永远不会是这样。在
所以,请不要在意这些细微的差别,只要使用更有意义的东西即可。:考虑到这两个检查具有不同的语义意义(一个数字不等于零,或一个数字大于零),请选择您实际要检查的那个。在
相关问题 更多 >
编程相关推荐