我看过一个关于 python 中循环速度的视频,其中解释说,这样做sum(range(N))比手动循环并将变量添加在一起要快得多range,因为前者由于使用了内置函数而在 C 中运行,而在后者中求和是在(慢)Python 中完成的。numpy我很好奇添加到混合物中会发生什么。正如我预期的那样np.sum(np.arange(N)),它是最快的,但sum(np.arange(N))比np.sum(range(N))执行简单的 for 循环还要慢。
为什么是这样?
这是我用来测试的脚本,一些关于我所知道的缓慢原因的评论(主要来自视频)以及我在我的机器上得到的结果(python 3.10.0,numpy 1.21.2):
更新的脚本:
import numpy as np
from timeit import timeit
N = 10_000_000
repetition = 10
def sum0(N = N):
s = 0
i = 0
while i < N: # condition is checked in python
s += i
i += 1 # both additions are done in python
return s
def sum1(N = N): …Run Code Online (Sandbox Code Playgroud)