OctaveとJuliaの行列演算速度を比較する
今回はOctaveとJuliaの行列演算速度を比較してみます。 高速と言われるJuliaですが、Octaveと比べてどの程度早いのでしょうか?
題材は以下より、n ×n行列とn×1列の積をとります。 この計算速度は一般的にO(n2)になるとされています。
- 作者: 加古孝,千葉文浩
- 出版社/メーカー: 丸善出版
- 発売日: 2014/12/11
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
Octave
Octaveのコードは以下になります。
n = 10000; step = 100; A = rand(n,n); v = rand(n,1); T = [ ]; sizeA =[ ]; for k = 500:step:n AA = A(1:k,1:k); vv = v(1:k); t = cputime; b = AA*vv; tt = cputime - t; T = [T,tt]; sizeA =[sizeA,k]; end plot(sizeA,T,'o')
この結果、n×n行列のnを横軸に取り、計算にかかった時間を縦軸に取ると以下のようなグラフが得られます。
n=10000のときは0.375秒かかりました。
Julia
Juliaで同等のプログラムを作成します。
using Plots n = 10000; step = 100; A = rand(n,n); v = rand(n,1); T = [ ]; sizeA =[ ]; for k = 500:step:n AA = A[1:k,1:k]; vv = v[1:k]; t=time() #function calc(AA,vv) b = AA*vv; #end tt = time() - t; push!(T,tt); push!(sizeA,k); end plot(sizeA,T)
この結果のグラフは以下になりました。
n=10000のときの計算時間は0.04秒で、なんとOctaveの1/10しか時間がかかっていません。
Juliaの速度を見せつけた結果となりました。 今回はここまでにします。