開発のヒホ

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

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

 もうこのシリーズはたぶん最後です。

 この前に、iOSにおいて行列積の速度テストを行いました。
 iOSのBLAS(Accelerate.framework)とEigenの行列の掛け算の実行速度テスト - 開発のヒホ

 結果、C++BLASバージョンは速いことと、C++のEigenバージョンもそこそこ速いことがわかりました。

 そして先日、MacOS上でPython(Numpy)とOctaveの速度テストを行いました。
 OctaveとPython(Numpy)の行列の掛け算の実行速度テスト - 開発のヒホ

 結果、大体同じぐらいの速度を出していることがわかりました。

 では、膨大な計算が必要な研究によく使われているらしいPythonと、本気のC++の実行時間を比べたらどうなのでしょうか。

 調べてみました!
 Pythonの方は上の記事1つ目のものを流用、C++の方は記事2つ目の、iOS用に作ったものをMac用に移植してみました。

 実行環境はCore i7なMacBookProで、1000×1000の行列積を100回求めます。
 結果はこちら!

Python : 平均 4.31秒
Octave : 平均 4.21秒
C++(Eigen) : 13.34秒
C++(BLAS) : 1.90秒

 C++(BLAS)が本気のC++ですが、やっぱり一番早いです。
 C++(Eigen)がそこそこ本気なC++なのですが、Pythonはこれよりも圧倒的に速いですね。

 確かMATLABPythonの2倍ぐらい速かったから・・・
 行列関連の計算は、MATLABC++の性能をかなり引き出していることになりそうです。さすが。

 すごく気力が残っていたら、MATLABとも実行速度を比べてみたいと思います。
 では!