【发布时间】:2021-03-30 14:47:28
【问题描述】:
附上一个小例子:
from numba import jit
import numba as nb
import numpy as np
@jit(nb.float64[:, :](nb.int32[:, :]))
def go_fast(a):
trace = 0.0
for i in range(a.shape[0]):
trace += np.tanh(a[i, i])
return a + trace
@jit
def go_fast2(a):
trace = 0.0
for i in range(a.shape[0]):
trace += np.tanh(a[i, i])
return a + trace
在 Jupyter 中运行:
x = np.arange(10000).reshape(100, 100)
%timeit go_fast(x)
%timeit go_fast2(x)
导致
每个循环 5.65 µs ± 27.1 ns(7 次运行的平均值 ± 标准偏差,每次 100000 次循环)
每个循环 3.8 µs ± 46.6 ns(平均值 ± 标准偏差,7 次运行,每次 100000 次循环)
为什么急切的编译会导致执行速度变慢?
【问题讨论】:
标签: python-3.x numpy jupyter numba