python 生成器是否比嵌套 for 循环更快?
Are python generators faster than nested for loops?
我在理解生成器时遇到了一些问题。
执行相同任务时,这些函数的执行时间是否不同?
def slow_sum(size):
x= 0
for i in range(size):
for j in range(size):
x += i + j
return x
def fast_sum(size):
return sum( [ (i+j) for j in range(size) for i in range(size)] )
size = 2000
slow_val = slow_sum(size)
fast_val = fast_sum(size)
assert slow_val == fast_val, "Values are not equal"
在我的计算机上使用 cProfile 分析这两个函数时,我得到了这些结果,但我希望它们是相似的。
总时间
slow_sum(2000)
- 0.85 毫秒
fast_sum(2000)
- 0.05 毫秒
您正在查看分析器输出的错误列。 tottime
不会一直计算 fast_sum
在 sum
调用或列表理解的堆栈框架内花费的时间。您应该查看 cumtime
,这两个函数几乎相等。
我在理解生成器时遇到了一些问题。
执行相同任务时,这些函数的执行时间是否不同?
def slow_sum(size):
x= 0
for i in range(size):
for j in range(size):
x += i + j
return x
def fast_sum(size):
return sum( [ (i+j) for j in range(size) for i in range(size)] )
size = 2000
slow_val = slow_sum(size)
fast_val = fast_sum(size)
assert slow_val == fast_val, "Values are not equal"
在我的计算机上使用 cProfile 分析这两个函数时,我得到了这些结果,但我希望它们是相似的。
总时间
slow_sum(2000)
- 0.85 毫秒
fast_sum(2000)
- 0.05 毫秒
您正在查看分析器输出的错误列。 tottime
不会一直计算 fast_sum
在 sum
调用或列表理解的堆栈框架内花费的时间。您应该查看 cumtime
,这两个函数几乎相等。