我知道C/C++是一种更低层次的语言,与其他高级语言相比生成的机器码相对优化。但我想还有很多其他因素,在实践中也能看出来。
当我进行简单的计算,如高斯样本集的蒙特卡罗平均值时,我发现使用C++实现和MATLAB实现没有太大区别,有时事实上MATLAB在时间上表现得更好一些。
当我转向成千上万行代码的大规模仿真时,真正的情况慢慢显现出来。C++仿真显示出明显优势,时间复杂度比MATLAB实现高出100倍。
C++中的代码大部分时间都是串行的,并没有明确做任何高级的优化。然而,据我所知,MATLAB本身就做了很多优化。例如,当我尝试生成大量的随机样本时,这一点就会显现出来,因为使用某些库(如IT++/GSL/Boost)的C++实现相对较慢(所使用的算法相同,即mt19937)。
我的问题很简单,就是想知道MATLAB/C++之间性能上是否有一个更简单的权衡。是否像人们说的那样,“只要可以,就使用C/C++”(经常遇到的)?从不同的角度来看,“除了舒适性,MATLAB还有什么好处?”
顺便说一句,我认为在这里不重要的编码效率参数是显著的,考虑到两种情况下相同的程序员。而且,我认为其他替代方案如Python、R在这里都不相关。但对我们所使用的特定库的依赖应该是有趣的。
[我是通信系统编码理论的博士生。我一直在使用MATLAB/C++进行仿真,并且拥有在这两种情况下编写数万行代码的合理经验]
x = A\b
实际上是十几种可能底层实现的前端。对于在纯MATLAB中实现的其他部分,JIT编译器有助于缓解解释语言的成本。此外,MATLAB通常鼓励编写矢量化代码(考虑SIMD指令)。最后,GUI部分主要是用Java实现的。 - Amro