MATLAB的性能

优化性能的MATLAB代码

MATLAB是快速和越来越快

MATLAB®在R2015a中引入的执行引擎,使用JIT编译来加速所有MATLAB代码。JIT编译生成针对MATLAB代码和特定硬件进行优化的本机级代码。执行引擎的架构支持对每个版本进行进一步优化,包括更快地调用内置函数和更快地索引操作。此外,许多MATLAB核心函数是隐式多线程的,以获得更好的性能。

MATLAB性能是使用一组基准测试,涵盖单元操作和完整的应用程序,代表真实的用户工作流程。这些基准测试在MATLAB发布周期中在不同的硬件和操作系统上运行多次,以验证新的优化、检测和解决性能退化,并识别操作系统特定的问题。

您可以在MATLAB发布说明中了解具体的性能改进。自MATLAB R2019b以来,性能发布说明包括与以前的MATLAB版本相比在执行时间方面的测量改进。


平均加速在MATLAB性能测试套件。

使用MATLAB分析器来识别代码中的瓶颈。

提高MATLAB代码的性能

提高代码性能的第一步是识别瓶颈。例如,你可以:

  • 使用如下函数度量代码执行时间抽搐toc,时间
  • 使用MATLAB Profiler查看程序的哪个部分运行时间最长
  • 使用MATLAB代码分析器获得额外的建议以提高性能

一旦您确定了代码中的瓶颈,已知的编程实践通常可以使您的代码更快。两种最常用的技术是数组预分配和向量化。预先配置可以通过避免动态内存分配来提高性能。向量化通过在单个命令中操作vector的所有元素,使您能够避免循环。这些技术结合在一起可以将代码速度提高几个数量级。

如果有必要,您可以通过使用编译语言编写应用程序的计算要求部分来提高性能。在MATLAB中,MEX函数使您能够调用高性能的C、c++或Fortran代码,就像MATLAB内置函数一样。使用MATLAB Coder™,您可以自动将MATLAB代码转换为MEX文件,这可能会运行得更快。


使用并行计算来充分利用硬件

您可以通过使用并行计算显式访问所有硬件资源来解决计算或数据密集型问题。只要熟悉并易于使用MATLAB,您就可以利用功能扩展到多个进程、多个线程和gpu。您可以在一台机器上开发和运行,并且可以在不需要重新编码的情况下将执行扩展到计算集群或云。


使用并行计算来显式地使用所有硬件资源。