相关疑难解决方法(0)

为什么 np.sum(range(N)) 非常慢?

我看过一个关于 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)

python performance numpy

30
推荐指数
3
解决办法
2356
查看次数

标签 统计

numpy ×1

performance ×1

python ×1