Fortran, Matlab, Octave, Scilab计算速度比较
http://blog.sina.com.cn/s/blog_5f350c960102vgr0.html
严格来说Fortran,和Matlab, Octave,Scilab并不属于一类,前者仅仅是一种编程语言而后者是集成了很多功能、拥有自己编程语言的计算用软件,最近做计算的时候对以上四个东西都有所涉及。
Matlab是众所周知的著名商业软件,相信理工科的学生没有没用过的,而另外两个分别是功能和matlab极其相似的开源版本和免费版本。matlab语言编写的程序在其他两个上面都可以直接运行(octave)或经过一个函数的简单翻译后直接运行(Scilab)。
这里不谈他们之间的功能差别,仅仅就计算速度上来谈一下我自己的感受。
我最开始在linux下用fortran写的计算程序,gfortran编译,运行很流畅。后来由于要方便其他人使用,分别在Octave,Scilab,Matlab中尝试重新写,结果……
首先在Octave发现运行极其缓慢,导致调试的时候痛苦无比,后来在网上查了一查发现了这个:ar.newsmth.net/thread-955d50a1ace98-1.html
这种两个数量级的差距真是有点惊人,然后我又看到有人说纯矩阵计算的话Scilab快于Matlab快于Octave,于是我最后在Scilab上写自己的程序。最终结果也很不令人满意,用gfortran编译的程序可以在一分钟之内跑完,而Scilab里面要跑1000s左右,还是差了数量级。最后在matlab里面重写,发现速度比Scilab快了一个数量级。商业软件就是不一样啊!不过还是要比fortran慢一些,无怪乎fortran成为科学计算的首选语言。
这样来看Octave似乎弱爆了,但是它并非一无是处,实际上在其他方面Octave很优秀,是matlab不可忽视的一个竞争者。总之如果计算量比较大的话,就不要选Octave了,忍痛用盗版Matlab吧……