2024年09月12日

一日一項目 Python高速化で四苦八苦・・・でもないか

Python高速化は Numba を使う。@jit だ。そこに じっと しておれェ なにを!

  JITコンパイラを使う。高速化したい関数の前に @jit を書く。そしてワタクシは、およよ、これは速いぞ。C++並みですぞの。ま~なんてこった。

そしたらもう一つ、並列化も可能だという。そこでCopilot先生に訊いて真似たのである。
∑(1/n) n = 1 から1億までの計算

概要
import time
from numba import jit, prange

@jit(nopython=True, parallel=True)
def series_sum(num_max):
    sum = 0
    for n in prange(1, num_max + 1):
        sum += 1 / n
    return sum
ここで num_max = 100000000 でして1億ね

parallel なし --- 0.5秒ぐらい
parallel あり --- 0.12秒ぐらい

@jit なし --- 7秒ぐらい

C++よりも速いぞの・・・いや、C++もOpenMP使って並列化すればかなり速くなるぞの

というわけでPythonで数値計算をする場合にはNumbaでjit, prange使おうぞの。

1億までの計算 なにもしないと 7秒、@jit 使うと 0.5秒、さらに並列化して 0.12秒。

うむむむむ。別の計算してアーーーソブOpen-mouthed smile

posted by toinohni at 09:03| 東京 ☀| Comment(0) | ソフト系雑学 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください