首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Octave比MATLAB慢?

为什么Octave比MATLAB慢?
EN

Stack Overflow用户
提问于 2012-09-25 00:43:12
回答 2查看 28.1K关注 0票数 42

我已经在几个项目中使用Octave和MATLAB,我遇到了一些问题。这个问题Why/when should I prefer MATLAB over Octave?)回答了几个,但仍然有一个挥之不去...

我已经阅读了许多比较Octave和MATLAB性能的文章/其他来源,我已经在标准脚本上运行了一些我自己的测试,这些测试证实了普遍的共识,即Octave对于标准操作通常比MATLAB慢得多(当然,迭代,所以比较是有意义的)。

人们的共识似乎还表明,MATLAB的大部分性能提升都归功于其JIT编译器,该编译器在运行时编译大型循环。这是有道理的,最大的性能差异似乎发生在这些情况下(例如Mathworks Matlab vs Gnu Octave)

我的问题如下:为什么向量化的代码在Octave中也会运行得更慢?在这种情况下,似乎应该在循环之前将内存放在一边,一些本机C/C++循环应该执行该操作,这将使向量化代码的性能与Octave和MATLAB相当。此外,这是否具有更广泛的含义,即Octave对于复杂的操作可能表现得更差,即使编写的代码不需要/未使用JIT编译器?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-25 03:14:01

有四种方法可以提高Matlab代码的速度:

Matlab:运行时编译有助于循环,但似乎也会加快(或至少与)代码的其他部分交互,根据我在C/C++中的observations.

  • Implementing函数:有一堆/Octave函数是在
  • /Octave中实现的。在每个版本中,都会有更多的函数被加入到built-ins.
  • Multithreading:中,还有一些具有多线程实现的a list of functions,这将加快function calls.
  • Generally更有效的实现速度。例如,中值滤波器在几个版本之前获得了整数输入的巨大速度提升。

所有这些方法都需要开发人员致力于使代码更快。据我所知,Octave开发人员的主要关注点是确保( Matlab )功能的存在,而性能提高似乎是过去几年Matlab开发的重点。

票数 41
EN

Stack Overflow用户

发布于 2014-03-31 02:11:24

Matlab内部使用英特尔数学内核库(英特尔MKL)进行向量和矩阵运算。这给了Matlab比Octave更大的优势。

在Matlab中尝试命令“version”和“version”,以检查Matlab正在使用的-lapack的版本。

讨论MKL在Matlab中的使用的一个快速链接是http://stanford.edu/~echu508/matlab.html

英特尔MKL是专有的。software.intel.com/en-us/intel-mkl。但是,对于非商业用途,Linux版本是免费的。如果Octave可以以某种方式使用安装在我们机器上的MKL,它应该会显着提高Octave的速度。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12569351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档