開発のヒホ

iOSとかAndroidとかのアプリを開発するのに四苦八苦するブログ

OctaveとPython(Numpy)の行列の掛け算の実行速度テスト

 先日、研究室でMATLABPython(Numpy使用)の行列の積の速度テストをしてみた結果、
 MATLABの方が倍ぐらい速いらしいことがわかりました。

 MATLABは製品ですからね、当然といえば当然の結果です。
 逆にNumpyでそこまでの速度が出るのが驚きです。

 では、通称無料版MATLABOctaveと比較するとどうなんでしょうか。
 試してみました。

test.py

import time
import numpy as np

for i_trial in range(5) :
    a = np.random.rand(1000, 1000)
    b = np.random.rand(1000, 1000)
    c = np.ones((1000, 1000))

    time_python = 0
    for i in range(100) :
        time_start = time.time()
        c = np.dot(a,b)
        time_end = time.time()
        time_python = time_python + (time_end - time_start)

    print( time_python )

test.m

for i_trial = 1:5
    a = rand(1000, 1000) ;
    b = rand(1000, 1000) ;
    c = ones(1000, 1000) ;

    time_octave = 0 ;
    for i=1:100
        tic ;
        c = a * b ;
        time_octave = time_octave + toc ;
    end

    disp(time_octave) ;
end

 どちらも1000×1000のランダムな行列の積を、5回求めています。
 手持ちのCore i7なMacBookProで実行した結果・・・

% octave  
 4.1992
 4.2182
 4.2005
 4.2004
 4.2418

# python
 4.256770849227905
 4.300849676132202
 4.309364557266235
 4.3376030921936035
 4.32429313659668

 あんまり変わらないですね。

 でもPythonの方はまだ速くなる余地がありそうです。
 Atsushi TATSUMA Web Page » GotoBLAS を使ったビルドで Numpy を高速化する

 まぁ、意外とOctaveも捨てたもんじゃないということで。
 気力があればC++とも比較してみたいところです。

 (PythonとNumpyのインストールについてはこちらを参照↓)
 Homebrewを使ってMacにPython3とかNumpyとかPcipyとかをインストールする - 開発のヒホ