主要内容

提高性能的技巧

为了提高代码的性能,请考虑这些技术。

环境

注意共享计算资源和降低MATLAB性能的后台进程®代码。

代码结构

在组织代码时:

  • 使用函数而不是脚本。函数通常更快。

  • 优先选择局部函数而不是嵌套函数。尤其当函数不需要访问main函数中的变量时,请使用这种做法。

  • 使用模块化编程。为了避免大文件和代码访问不频繁的文件,请将代码分解为简单的内聚函数。这种做法可以降低首次运行成本。

性能编程实践

考虑这些编程实践来提高代码的性能。

  • 预分配——考虑预分配数组所需的最大空间量,而不是连续调整数组的大小。有关更多信息,请参见预先配置

  • 向量化——考虑使用MATLAB矩阵和向量运算,而不是编写基于循环的代码。有关更多信息,请参见向量化

  • 在循环外部放置独立的操作——如果每个操作的计算结果不不同循环迭代,将它移到循环之外,以避免冗余计算。

  • 如果数据类型发生变化,则创建新变量——创建一个新变量,而不是将不同类型的数据分配给现有变量。更改现有变量的类或数组形状需要额外的处理时间。

  • 使用短路运算符-使用短路逻辑运算符,&&||在可能的情况下。短路更有效,因为MATLAB只在第一个操作数不能完全确定结果时才计算第二个操作数。有关更多信息,请参见逻辑运算符:短路

  • 避免使用全局变量——尽量减少全局变量的使用是一种很好的编程实践,全局变量会降低MATLAB代码的性能。

  • 避免重载内置函数——避免重载任何标准MATLAB数据类上的内置函数。

  • 避免使用“数据作为代码”——如果有很大一部分代码(例如,超过500行)生成常量值变量,考虑构造变量并保存它们,例如,在mat文件或. csv文件。然后,您可以加载变量而不是执行代码来生成它们。

建议在特定MATLAB功能

在编写性能关键代码时,考虑以下关于特定MATLAB函数的提示。

  • 避免清除不必要的代码。不要使用清除所有以编程方式。有关更多信息,请参见清晰的

  • 避免查询MATLAB状态的函数,如inputname哪一个存在(var,dbstack.运行时自省在计算上非常昂贵。

  • 避免使用以下函数evalevalcevalin,函数宏指令(.使用函数句柄input to函数宏指令只要有可能。从文本间接计算MATLAB表达式是非常昂贵的。

  • 避免在程序中使用cd目录,rmpath,如果可能的话。在运行时更改MATLAB路径会导致代码重新编译。

相关的话题