Python优化闲谈

Numba使用心得

在优化Python的过程中,了解到Numba可以对Python原生代码进行CPU和GPU加速。于是体验了一下。

代码:

from numba import jit

@jit
def test(value):
    a = 0
    for i in range(value):
        a += i

def run():
    start = time.time()
    test(10000)
    print("time1:", (time.time()-start))
    # 不使用numba的时间:0.0012049674987792969s
    # 使用numba的时间:1.4513230323791504s

run()

想来想去感觉根本不是那么回事,不是说numba是原生Python的代码几十倍吗?

继续探索把10000改成100000000效果如下:

# 不使用numba的时间:16.057264804840088s
# 使用numba的时间:1.8022119998931885s

发现随着数据增大后,使用numba所消耗的时间并没有明显变长,而这1.8s的时间内应该是编译时间占了大头。

继续探索,改一下代码,还是使用numba:

def run():
    start = time.time()
    test(100000000)
    print("time1:", (time.time()-start))
    start = time.time()
    test(100000001)
    print("time2:", (time.time()-start))

time1: 1.577368974685669
time2: 2.1457672119140625e-06

大吃一惊,time2的速度是真的飞起来了。

好了,我想你应该对numba的实用性方面有个概念了。

关于Cython到底能不能提升40倍性能

可以,随着循环计算两增加到万的级别是有明显的性能提升。

但是在处理较小数据的时候表现不佳,这时只能通过优化算法来实现。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值