環境
Ubuntu 16.04
インストール方法
これを参考にしてインストールした
# llvmをインストール(入れるとバージョンが3.8だった)
$ sudo apt-get install llvm #他のパッケージは元から入っていた
$ 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
実行
時間の計測にtimeで良いのかは不明だけど、ざっくりと知りたいだけなのであまり気にしていない。
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)
@numba.jitの部分をコメントアウトすると、時間が比較できる。
コメントアウトしなかった場合1.46s, コメントアウトした場合26.68sとなり20倍以上速くなった。
一方でループの回数を1000回から1回に変更するとコメントアウトしなかった時0.025s、コメントアウトしたとき0.541sとなり、numbaを使わなかった方が速くなった。一番最初にコンパイルするのに時間がやはりかかっている。
一枚目の画像がループ回数が0付近のときの画像で、二枚目が全体的な経過時間の画像
縦軸が時間(秒)で、横軸がループ回数、緑色がnumbaなしで青色がnumbaあり。