Ubuntu 16.04
Ce installée
#Installez llvm(Si vous le mettez, la version est 3.Était 8)
$ sudo apt-get install llvm #D'autres packages étaient initialement inclus
$ sudo pip3 install enum34 funcsigs
$ sudo LLVM_CONFIG=/usr/bin/llvm-config-3.8 pip3 install llvmlite
$ sudo LLVM_CONFIG=/usr/bin/llvm-config-3.8 pip3 install numba
Je ne sais pas si le temps est bon pour mesurer le temps, mais je veux juste savoir approximativement, donc je m'en fiche.
import time
import numpy as np
import numba
@numba.jit
def rando(a):
for i in range(N):
for j in range(N):
a[i][j] = np.random.rand()
return a
start = time.time()
N = 100
a = np.zeros((N, N))
for i in range(1000):
a = rando(a)
end = time.time()
print(end - start)
Vous pouvez comparer les temps en commentant la partie @ numba.jit. Si vous n'avez pas fait de commentaire, c'était 1,46s, et si vous avez commenté, c'était 26,68s, ce qui était ** 20 fois plus rapide **. D'autre part, lorsque le nombre de boucles est passé de 1000 à 1, il était de 0,025 s lorsqu'il n'était pas commenté et de 0,541 s lorsqu'il était commenté, ce qui était plus rapide sans utiliser numba. La compilation est encore longue au tout début.
La première image est l'image lorsque le nombre de boucles est d'environ 0, et la deuxième image est l'image du temps écoulé global. L'axe vertical est le temps (secondes), l'axe horizontal est le nombre de boucles, le vert est sans numba et le bleu est avec numba.
Recommended Posts