MATLAB

MATLAB 性能

优化 MATLAB 代码的性能

MATLAB:卓越性能,更快一步

MATLAB® 执行引擎于 R2015a 推出,采用 JIT 编译,可显著加快所有 MATLAB 代码的执行速度。JIT 编译生成本机级代码,该代码针对 MATLAB 代码和特定硬件进行优化。得益于其架构,该执行引擎随着版本更迭不断优化,包括更快地调用内置函数和更快地执行索引操作。此外,很多核心 MATLAB 函数通过隐式多线程化提高性能。

MATLAB 性能由一组基准测试衡量,其中既包含单元操作,也包含反映真实用户工作流的完整应用程序。在一个 MATLAB 发布周期中,这些基准测试会在不同硬件和操作系统上运行多次,以确认新优化、检测和解决性能退化,并识别特定于操作系统的问题。

请参考 MATLAB 发行说明,了解具体的性能改进。自 MATLAB R2019b 以来,性能方面的发行说明开始量化呈现执行时间相比上一版本的改进情况。


MATLAB 性能测试套件中的平均加速情况。

使用 MATLAB 探查器识别代码中的瓶颈。

提高 MATLAB 代码的性能

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

  • 使用 tictoctimeit 等函数测量代码执行时间
  • 使用 MATLAB 探查器查看程序的哪些部分运行时间最长
  • 使用 MATLAB 代码分析器获得提高性能的其他建议

一旦确定了代码中的瓶颈,通常可采用已知的编程技巧加快代码执行速度。两种最常用的方法是数组预分配和向量化。预分配可避免动态内存分配,从而提高性能。向量化在单个命令中操作向量的所有元素,从而避免循环操作。结合使用这些方法,代码速度可提升几个数量级。

如有必要,对于应用程序中计算量大的部分,您可以用编译语言编写,从而提高性能。在 MATLAB 中,MEX 函数支持您调用高性能的 C、C++ 或 Fortran 代码,就像调用 MATLAB 内置函数一样轻松。借助 MATLAB Coder™,您可以自动将 MATLAB 代码转换为 MEX 文件,后者的运行速度可能会快很多。


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

您可以使用并行计算来直接利用所有硬件资源,从而求解计算或数据密集型问题。借助熟悉的 MATLAB,您可以轻松利用各项功能来扩展到多个进程、多个线程和 GPU。您可以在同一台计算机上完成开发和运行,还可以将执行扩展到计算集群或云,而无需重新编码。


使用并行计算可直接利用您的所有硬件资源。