所以我正在阅读这个question,其中OP显示了功能范围和全局范围之间的显着性能差异(~2x差异)。我很兴奋并尝试以两种方式重现OP的结果。
time
命令功能
def main():
for i in xrange(10**8):
pass
main()
real 0m2.040s
user 0m2.028s
sys 0m0.011s
全局
for i in xrange(10**8):
pass
real 0m4.710s
user 0m4.699s
sys 0m0.010s
第二个版本慢两倍,这是预期的。
功能:
%%timeit
def main():
for i in xrange(10**8):
pass
main()
1 loops, best of 3: 2.15 s per loop
全局:
%%timeit
for i in xrange(10**8):
pass
1 loops, best of 3: 2.14 s per loop
这两个版本现在表现出相同的性能!发生了什么事?
答案 0 :(得分:0)
timeit
在本地命名空间中运行所有测试。您的情况唯一的区别是您添加了一个函数调用,但两个版本都使用本地名称运行。
请参阅timeit
模块来源中的inner
function template; %(stmt)s
是经过反复测试以获得每次执行的平均时间的代码。