Numba は、Python と NumPy のコードのサブセットを、高速な機械語に変換するオープンソースの JIT コンパイラです。Numba のサイト [1] によると、Numba デコレータを Python 関数に適用するだけで、実行時に機械語に変換されるということです。
Numba のサイトで紹介されている簡単なサンプルで、Numba の有無で実行速度の差がどのぐらい違うのかを確認してみました。
下記の OS 環境で動作確認をしました。
Fedora Silverblue 35 | x86_64 | |
Python | 3.10.2 | |
Numba | 0.55.1 |
Numbe は pip コマンドでインストールしました。
(venv) $ pip install numba
以下のサンプルの処理部分は、Numba のサイト [1] で紹介されているモンテカルロ法のサンプルの丸写しです。Numba のデコレータ指定の有無での実行速度の差を計測してみました。
test_numba.py
非力な CPU (Intel Celeron N4020) を搭載した PC による結果です。
monte_carlo_pi_1 function tool 11921.090 ms
Pi = 3.140964
monte_carlo_pi_2 function tool 2346.997 ms
Pi = 3.1419032
monte_carlo_pi_1 が Numba 指定無し、monte_carlo_pi_2 が Numba 指定有りです。簡単な処理とはいえ、一億回ループを回して、計算時間が一桁違うのであれば、使ってみる価値は十分ありそうです。また、並列演算にも使えるようなので、使いこなせるようになればパフォーマンス向上に役立ちそうです。
参考サイト
にほんブログ村
0 件のコメント:
コメントを投稿