我正在运行简单的测试,看看 numba.jit 是如何提高 numpy 数组循环函数的速度的。但是,在这两个示例中:def f(): a=np.ones(1000) for i in range(100000): a+=np.random.normal(0,1,1000)%time f()和from numba import jit@jitdef g(): a=np.ones(1000) for i in range(100000): a+=np.random.normal(0,1,1000)%time g()我得到:CPU 时间:用户 3.75 秒,系统:0 ns,总计:3.75 秒挂墙时间:3.75 秒CPU 时间:用户 3.86 秒,系统:4.11 毫秒,总计:3.86 秒挂墙时间:3.84 秒所以 numba.jit 在这种情况下似乎没有任何影响。这是为什么?
2 回答
慕田峪7331174
TA贡献1828条经验 获得超13个赞
目前尚不清楚为什么您认为应该进行改进。我通过添加一个带有 的内部循环看到了改进numba,这可能是因为 JIT 编译可以使用更基本的、较低级别的类型优化操作。
# python 3.6.0, numpy 1.11.3, numba 0.30.1
np.random.seed(0)
def f(m, n):
a = np.ones(n)
for i in range(m):
a += np.random.normal(0,1,n)
return a
@jit
def g(m, n):
a = np.ones(n)
for i in range(m):
x = np.random.normal(0,1,n)
for j in range(n):
a[j] += x[j]
return a
%timeit f(10**5, 10**3) # 6.53 s per loop
%timeit g(10**5, 10**3) # 4.68 s per loop
添加回答
举报
0/150
提交
取消