Ubuntu 16.04
This Eingerichtet
#Installieren Sie llvm(Wenn Sie es eingeben, ist die Version 3.War 8)
$ sudo apt-get install llvm #Andere Pakete waren ursprünglich enthalten
$ 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
Ich bin mir nicht sicher, ob die Zeit gut ist, um die Zeit zu messen, aber ich möchte es nur grob wissen, deshalb ist es mir eigentlich egal.
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)
Sie können die Zeiten vergleichen, indem Sie den Teil @ numba.jit auskommentieren. Wenn Sie nicht auskommentierten, waren es 1,46 Sekunden, und wenn Sie auskommentierten, waren es 26,68 Sekunden, was ** 20-mal schneller ** war. Wenn andererseits die Anzahl der Schleifen von 1000 auf 1 geändert wurde, waren es 0,025 Sekunden, wenn sie nicht auskommentiert wurden, und 0,541 Sekunden, wenn sie auskommentiert wurden, was ohne Verwendung von numba schneller war. Das Kompilieren am Anfang dauert noch lange.
Das erste Bild ist das Bild, wenn die Anzahl der Schleifen bei 0 liegt, und das zweite Bild ist das Bild der insgesamt verstrichenen Zeit. Die vertikale Achse ist die Zeit (Sekunden), die horizontale Achse ist die Anzahl der Schleifen, grün ist ohne numba und blau ist mit numba.
Recommended Posts