前言
前段时间我问了一个关于Matlab与Python性能的问题(Performance: Matlab vs Python).我很惊讶Matlab比Python更快,特别是在meshgrid中.在讨论这个问题时,有人指出我应该使用Python中的包装器来调用我的C代码,因为C代码也可供我使用.我在C,Matlab和Python中有相同的代码.
在这样做时,我再次惊讶地发现Matlab在矩阵汇编和计算中比C更快.我有一个稍微大一点的代码,我正在研究一段矩阵向量乘法.较大的代码在多个实例处执行这样的乘法.总体而言,C中的代码比Matlab快得多(因为Matlab中的函数调用有开销等),但Matlab似乎在矩阵向量乘法(底部的代码片段)中表现优于C语言.
结果
下表显示了组装内核矩阵所需的时间与将矩阵与向量相乘所需的时间的比较.结果编译为矩阵大小N×N,其中N在10,000到40,000之间变化.哪个不是那么大.但有趣的是,Mat获得的N越大,表现越好. Matlab的总时间快3.8到5.8倍.此外,它在矩阵组装和计算中也更快.
___________________________________________
|N=10,000 Assembly Computation Total |
|MATLAB 0.3387 0.031 0.3697 |
|C++ 1.15 0.24 1.4 |
|Times faster 3.8 |
___________________________________________
|N=20,000 Assembly Computation Total |
|MATLAB 1.089 0.0977 1.187 |
|C++ 5.1 1.03 6.13 |
|Times faster 5.2 |
___________________________