<p>是的。标准库中的<code>timeit</code>模块就是如何检查这些东西的。E、 克:</p>
<pre><code>AmAir:stko aleax$ python -mtimeit -s'def isodd(x): x & 1' 'isodd(9)'
1000000 loops, best of 3: 0.446 usec per loop
AmAir:stko aleax$ python -mtimeit -s'def isodd(x): x & 1' 'isodd(10)'
1000000 loops, best of 3: 0.443 usec per loop
AmAir:stko aleax$ python -mtimeit -s'def isodd(x): x % 2' 'isodd(10)'
1000000 loops, best of 3: 0.453 usec per loop
AmAir:stko aleax$ python -mtimeit -s'def isodd(x): x % 2' 'isodd(9)'
1000000 loops, best of 3: 0.461 usec per loop
</code></pre>
<p>如您所见,在我的(第一天==old==slow;-)MacBookAir上,<code>&</code>解决方案的重复速度比<code>%</code>解决方案快7到18纳秒。</p>
<p><code>timeit</code>不仅告诉你什么是更快的,还告诉你多少(只运行几次测试),这通常表明它是多么的不重要(当调用函数的开销在400左右时,你真的关心10纳秒的差异吗?!-)... </p>
<p>让程序员相信微观优化本质上是无关紧要的,这已经证明是一项不可能完成的任务——尽管已经过去了35年(在这35年中,计算机的速度提高了几个数量级!)自从Knuth<a href="http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf" rel="noreferrer">wrote</a></p>
<blockquote>
<p>We should forget about small
efficiencies, say about 97% of the
time: premature optimization is the
root of all evil.</p>
</blockquote>
<p>正如他所解释的,这是引用了霍尔的一个更古老的声明。我想每个人都完全相信他们的案子只剩下3%!</p>
<p>因此,我们(特别是蒂姆·彼得斯,在这里应该得到荣誉)没有无休止地重复“没关系”,而是放进了标准的Python库模块<code>timeit</code>,这使得测量这样的微基准变得非常容易,因此至少让一些</em>程序员说服自己,嗯,这个病例确实属于97%的人群!-)</p>