主要内容

提高性能的技术

要加快代码的性能,请考虑这些技术。

环境

请注意共享计算资源并降低MATLAB性能的后台进程®密码

代码结构

在组织代码时:

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

  • 与嵌套函数相比,更喜欢局部函数。特别是当函数不需要访问主函数中的变量时,请使用此做法。

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

性能编程实践

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

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

  • 矢量化-而不是编写基于循环的代码,考虑使用Matlab矩阵和向量运算。有关详细信息,请参阅矢量化

  • 在循环之外放置独立的操作-如果代码对每个循环的计算结果不不同对于虽然循环迭代,将其移出循环以避免冗余计算。

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

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

  • 避免全局变量-最小化全局变量的使用是一种很好的编程实践,全局变量会降低MATLAB代码的性能。

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

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

关于具体问题的提示MATLAB功能

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

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

  • 避免使用查询MATLAB状态的函数,例如输入名称,哪一个,,存在(变量)dbstack.运行时自省在计算上非常昂贵。

  • 避免使用诸如评估,评估,埃瓦林节日(文件名).使用函数句柄输入函数宏指令只要可能。从文本间接计算MATLAB表达式的计算代价很高。

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

相关的话题