Я пытаюсь проверить numba и numpy на очень простом примере и проверить эффективность. Однако
Используя time.clock и timeit, я получаю очень разные результаты для numba.
В случае time.clock это показывает, что использование numba с numpy замедляет работу функции.
Имеет ли смысл использовать vectorize () для NbNpFunc?
Вот мой код. Спасибо за помощь.
import numpy as np
from numba import jit
import time
import timeit
#import math
#import matplotlib.pyplot as plt
#import matplotlib.animation as animation
N = 10000
def PyFunc(N):
r = list(range(0,N))
for i in range(0,len(r)):
r[i] += r[i]*r[i]
return(r)
def NpFunc(N):
r = np.arange(0,N)
r += r*r
return(r)
@jit
def NbFunc(N):
r = list(range(0,N))
for i in range(0,len(r)):
r[i] += r[i]*r[i]
return(r)
@jit
def NbNpFunc(N):
r = np.arange(0,N)
r += r*r
return(r)
print("\nUsing time.clock()")
start_time = time.clock()
res1 = PyFunc(N)
print("PyFunc --- %s seconds ---" %(time.clock() - start_time))
start_time = time.clock()
res2 = NpFunc(N)
print("NumPyFunc --- %s seconds ---" % (time.clock() - start_time))
start_time = time.clock()
res3 = NbFunc(N)
print("NumbaFunc --- %s seconds ---" % (time.clock() - start_time))
start_time = time.clock()
res4 = NbNpFunc(N)
print("NumbaNpFunc --- %s seconds ---" % (time.clock() - start_time))
print("\nUsing timeit")
t = timeit.Timer(lambda: PyFunc(N))
print ("PyFunc --- %s seconds ---" %t.timeit(number=1))
t = timeit.Timer(lambda: NpFunc(N))
print ("NumPyFunc --- %s seconds ---" %t.timeit(number=1))
t = timeit.Timer(lambda: NbFunc(N))
print ("NumbaFunc --- %s seconds ---" %t.timeit(number=1))
t = timeit.Timer(lambda: NbNpFunc(N))
print ("NumbaNpFunc --- %s seconds ---" %t.timeit(number=1))