【发布时间】:2021-03-26 14:27:38
【问题描述】:
我想检查每个功能的速度,但遇到了问题。如您所见,下面的代码包含两个相同的函数:func & func2。但是 func 是直接在 timeit.timeit 方法中声明的。 经过测试,我得到了一个结果:Func result: 0.08, func 2 result: 0.21.。这是一个巨大的差异。
这里有一个问题:为什么相同的功能有不同的速度?从全局范围获取 func2 需要时间吗?
import timeit
def func2() -> range:
return range(1024)
def main():
"""
Number of seconds for each function to perform with 500k executions
"""
func_res = round(timeit.timeit(
'def func() -> range: return range(1024); func()',
number=500_000
),
2)
func2_res = round(timeit.timeit(
'func2()',
number=500_000,
globals=globals()
),
2)
return f'Func result: {func_res}, func 2 result: {func2_res}.'
if __name__ == '__main__':
print(main())
附注'def func() -> range: return range(1024)' ---> 'def func() -> range: return range(1024); func()' 已被编辑。
【问题讨论】: