要加快代码的性能,请考虑这些技术。
请注意共享计算资源并降低MATLAB性能的后台进程®密码
在组织代码时:
使用函数而不是脚本。函数通常更快。
与嵌套函数相比,更喜欢局部函数。特别是当函数不需要访问主函数中的变量时,请使用此做法。
使用模块化编程。为了避免使用大文件和不常访问代码的文件,请将代码拆分为简单而内聚的函数。这种做法可以降低首次运行成本。
考虑这些编程实践来提高代码的性能。
预分配——而不是连续调整数组大小,考虑预先分配数组所需的最大空间量。有关详细信息,请参阅预先配置.
矢量化-而不是编写基于循环的代码,考虑使用Matlab矩阵和向量运算。有关详细信息,请参阅矢量化.
在循环之外放置独立的操作-如果代码对每个循环的计算结果不不同对于
或虽然
循环迭代,将其移出循环以避免冗余计算。
如果数据类型更改,则创建新变量-创建新变量,而不是将不同类型的数据分配给现有变量。更改现有变量的类或数组形状需要额外的处理时间。
使用短路运算符-使用短路逻辑运算符,&&
和||
在可能的情况下。短路更有效,因为MATLAB只在第一个操作数不能完全确定结果时才计算第二个操作数。有关更多信息,请参见逻辑运算符:短路
.
避免全局变量-最小化全局变量的使用是一种很好的编程实践,全局变量会降低MATLAB代码的性能。
避免重载内置函数-避免重载任何标准MATLAB数据类上的内置函数。
避免使用“数据作为代码”——如果有大量代码(例如,超过500行)生成具有常量值的变量,请考虑构造变量并保存它们,例如,在一个Mat文件中或.csv
文件然后可以加载变量,而不是执行代码来生成它们。
在编写性能关键代码时,考虑以下关于特定MATLAB函数的提示。
避免清除过多的代码。不要使用清除所有
以编程方式。有关详细信息,请参阅清晰的
.
避免使用查询MATLAB状态的函数,例如输入名称
,哪一个
,谁
,存在(
和变量
)dbstack
.运行时自省在计算上非常昂贵。
避免使用诸如评估
,评估
,埃瓦林
和节日(
.使用函数句柄输入文件名
)函数宏指令
只要可能。从文本间接计算MATLAB表达式的计算代价很高。
避免编程使用光盘
,目录
和rmpath
,如果可能的话。在运行时更改MATLAB路径会导致代码重新编译。