突然の、PYTHON高速化 |     ✤ We Love Softbrain ✤ 

    ✤ We Love Softbrain ✤ 

        日々の仕事や、プライベートな趣味まで掲載しています。


テーマ:
お久しぶりです。シニアTです。
いろいろ考えた結果、表題にたどり着きました。
 
PYTHONは、低級言語に負けないくらい高速なプログラムを書くことができるので、その話をします。
 
例えば、行列の各行の和を求めるには、下記の通りです。
 
from numba import njit,prange
@njit(parallel=True, fastmath=True)
def sum_1(x):
    nr, nc = x.shape
    res = np.zeros(nr)
    for i in prange(nr):
        for j in range(nc):
            res[i] += x[i, j]
    return res
 
頭の二行が、高速化にかかわる部分で、残りが、ほぼ普通の(らしくはないけど)PYTHONのプログラムです。
これを通常通りに実行するだけです。
 
この職場のPCで、20000×20000の行列で実験すると、
 ①上記プログラム...144ms
 ②numpy(C等で実装された行列計算)...508ms
となり、負けないどころか、圧勝してしましました。(笑)
numpyは、積算の精度等、いろいろ拘りがあるのだとは思いますが、驚くべき結果であることは間違いありません。
 
様々な細かい処理を、簡単に高速化できると、データの山との格闘も多少は快適なものになるでしょう。
 
次回も、PYTHONの予定です。
 
 

ソフトブレインさんをフォロー

ブログの更新情報が受け取れて、アクセスが簡単になります