python性能问题

                                           计算机的性能

计算机的性能由计算机的计算单元,存储单元 和 通信层。

计算单元: 用IPC和时钟速度来衡量,这两个属性其实是一个竞争的关系,通常IPC高,时钟速度会比较低,但也有例外,这个就是GPU,GPU IPC与时钟速度都很高。提高CPU的矢量计算,矢量计算是指一次提供多个数据给CPU并同时被操作。

存储单元: 有寄存器,RAM, DISK, L1/L2

通信层: 总线

python 中我们无法使用矢量计算,因为底层python封装好了,python本身语法不支持如

a = [1,2,3,4]
10/a

这种操作不支持,但是我们有一个库可以做到矢量计算,那就是numpy,所以通常使用numpy性能上快很多.

import math
import time

data = 171515115111719
def djuge_prime(n):
    mid = math.sqrt(n)
    for i in range(2, int(mid)+1):
        if n%i == 0:
            return False
    else:
        return True

def test(k):
    s = time.time()
    print djuge_prime(k)
    print "need time:%f" %(time.time()- s,)

 

这是普通的写法结果是:

                        True

                        need time:0.920494

使用numpy实现:

import math
import time
import numpy as np
data = 171515115111719

def djuge_prime1(n):
    mid = math.sqrt(n)
    data = np.arange(2,int(mid)+1,1)
    return not any(n%data == 0)


def test1(k):
    s = time.time()
    print djuge_prime1(k)
    print "need time:%f" %(time.time()- s,)


test1(data)

结果是:

                      True

                      need time:0.451969

几乎快一倍,所以能使用numpy尽量使用numpy,关乎python性能的问题还与python单线程的问题。

  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值