numbaのjitというものを使うと普通のpythonの計算がとても速くやってくれるという噂を聞きました。
試しに使ってみることにします。
始めましょうか。
===========================
from numba import jit
import time
@jit
def function():
number = 10 ** 8
x = [0] * number
total_time = 10
time_mesh = 10 ** 3
dt = total_time / time_mesh
a = 0.01
b = 0.02
for i in range(number - 1):
x[i + 1] = x[i] + dt * (a * x[i] - b * x[i] ** 2)
t0 = time.time()
function()
t1 = time.time()
print('Calculation time=', float(t1 - t0), '[s]')
==========================
計算にかかった時間が、
numba jit 1.5秒
negative control 12.6秒
となった。
さらに、計算回数を10倍にして、増やすと、
numba jit 18.1秒
negative control 147.6秒
となった。
やはり、多少コードの変更は必要だが、numbaを使った方が圧倒的に速いことがわかった。
参考文献はこちら。