我知道 C/C++ 是一种低级语言,当我们与任何其他高级语言进行比较时,它会生成相对优化的机器代码。但我想还有更多的东西,这从实践中也很明显。
当我进行简单的计算(例如对高斯样本集合进行蒙特卡罗平均)时,我发现 C++ 实现或 MATLAB 实现之间没有太大区别,有时实际上 MATLAB 在时间上表现得更好一些。
当我继续使用数千行代码进行更大规模的模拟时,真实的画面慢慢地出现了。 C++ 仿真显示出卓越的性能,例如在时间复杂度上比等效的 MATLAB 实现好 100 倍。
大多数时候,C++ 中的代码几乎是串行的,并且没有明确地进行高保真优化。然而,据我所知,MATLAB 本质上做了很多优化。例如,当我尝试生成大量随机样本时就会出现这种情况,而使用 IT++/GSL/Boost 等库的 C++ 中的等效项执行相对较慢(使用的算法相同,即 mt19937)。
我的问题只是想知道 MATLAB/C++ 在性能上是否存在更简单的权衡。是不是就像人们说的,“只要有可能,C/C++ 就更好”(经常遇到的)?从另一个角度来看,“除了舒适之外,MATLAB 还有什么好处?”
顺便说一句,我认为编码效率参数在这里并不重要,在这两种情况下都考虑到同一个程序员。而且,我认为像 python,R 这样的其他替代品在这里不相关。但是对我们使用的特定库的依赖应该很有趣。
[我是通信系统编码理论的博士生。我一直在使用 matlab/C++ 进行模拟,并且在这两种情况下都有编写几万行代码的合理经验]
原文由 Loves Probability 发布,翻译遵循 CC BY-SA 4.0 许可协议
一些 Matlab 代码使用内置多线程的标准线性代数虚构。因此,它们似乎比顺序 C 代码更快。