为了账号安全,请及时绑定邮箱和手机立即绑定

numba.jit 似乎对性能没有影响的情况

numba.jit 似乎对性能没有影响的情况

斯蒂芬大帝 2021-09-02 16:11:18
我正在运行简单的测试,看看 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


查看完整回答
反对 回复 2021-09-02
  • 2 回答
  • 0 关注
  • 195 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信