需要帮助理解python中timeit函数的循环速度



我需要帮助来理解%timeit函数在这两个程序中的作用。

程序A

a = [1,3,2,4,1,4,2]
%timeit [val + 5 for val in a]
830 ns ± 45.9 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

程序B

import numpy as np
a = np.array([1,3,2,4,1,4,2])
%timeit [a+5]
1.07 µs ± 23.7 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

我的困惑:

  1. µs大于ns。NumPy函数的执行速度如何慢于for循环
  2. 每个环路1.07µs±23.7 ns。。。为什么环路速度是以ns计算的,而不是以µs计算的

Numpy增加了开销,这将影响小型数据集的速度。矢量化在使用大型数据集时非常有用。

你必须尝试更大的数字:

N = 10_000_000

a = list(range(N))
%timeit [val + 5 for val in a]
import numpy as np
a = np.arange(N)
%timeit a+5

输出:

1.51 s ± 318 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
55.8 ms ± 3.63 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

最新更新