我看到一条评论让我想到了为什么 Python 代码在函数中运行得更快?.
我开始思考,并想我会使用timeit
库自己尝试,但是我得到了非常不同的结果:
(注意:10**8
已更改为10**7
使时间更快一些)
>>> from timeit import repeat
>>> setup = """
def main():
for i in xrange(10**7):
pass
"""
>>> stmt = """
for i in xrange(10**7):
pass
"""
>>> min(repeat('main()', setup, repeat=7, number=10))
1.4399558753975725
>>> min(repeat(stmt, repeat=7, number=10))
1.4410973942722194
>>> 1.4410973942722194 / 1.4399558753975725
1.000792745732109
- 我使用
timeit
正确吗? - 为什么这些结果彼此相差不到 0.1%,而另一个问题的结果却相差近 250%?
- 只有在使用
CPython编译的 Python 版本(如 Cython)时才会有区别吗? - 最终:Python 代码在函数中真的更快,还是仅仅取决于你如何计时?