import math
import numpy as np
from datetime import datetime as dt
from multiprocessing import Pool
def fun(v):
return math.exp(v)
def FunVec():
init()
fun_vecterize = np.vectorize(fun,otypes = [float])
x = fun_vecterize(v)
return x
def FunFor():
init()
x = np.zeros((iter,1))
for i in range(iter):
x[i] = math.exp(v[i])
return x
def Vec():
init()
x = np.exp(v)
return x
def init():
global iter,v
iter = 1000
v = np.random.randn(iter,1)
if __name__ == '__main__':
iter = 1000
v = np.random.randn(iter,1)
x = Vec()
> python -m timeit -s "import hellopy" "hellopy.Vec()"
5000 loops, best of 5: 44.3 usec per loop
> python -m timeit -s "import hellopy" "hellopy.FunVec()"
1000 loops, best of 5: 336 usec per loop
> python -m timeit -s "import hellopy" "hellopy.FunFor()"
500 loops, best of 5: 681 usec per loop
for循环,函数向量化和计算向量化之间的性能对比
函数向量化提升的效果没有计算向量化的提升明显