numpy.max は桁外れに速い(Python)

※ こちらも併せてお読み下さい
numpy.max はヘビーループでは遅い(Python)


ちょっと気づいたのでメモ。

最大値を取ることは良くあるけれど、Python なんか遅い。
max 関数がボトルネックになることがある。

max なんてわざわざ numpy 使う必要ないだろと勝手に思ってたけど
測ってみると桁外れに速かった。
ただし、入力は ndarray でないと速くない。それはそうかも。

まあ、桁外れと言っても、15倍程度なんだけれど、十分助かった。
ループ中の巨大配列での max だったので。

以下、実行コード。

import time
import numpy as np
def chk(fn, a):
    st = time.time()
    fn(a)
    print(time.time() - st)
a = list(range(0,10000000))
chk(max, a)
chk(max, np.array(a))
chk(np.max, a)
chk(np.max, np.array(a))

0.15296053886413574
0.6359236240386963
0.5353002548217773
0.010660648345947266

思い込みはいかんね。。。ちゃんと確認せんと。

Python のバージョンは 3.7.3 。