计算机的性能
计算机的性能由计算机的计算单元,存储单元 和 通信层。
计算单元: 用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单线程的问题。