提高工作表现的技巧
为了加快代码的性能,可以考虑以下技术。
环境
要注意共享计算资源并降低MATLAB性能的后台进程®代码。
代码结构
在组织代码时:
使用函数而不是脚本。函数通常更快。
优先使用局部函数而不是嵌套函数。使用这种做法,特别是当函数不需要访问主函数中的变量时。
使用模块化编程。要避免大文件和包含不常访问代码的文件,请将代码分割为简单且内聚的函数。这种做法可以减少首次运行的成本。
关于性能的编程实践
考虑这些编程实践来提高代码的性能。
预分配——与其不断地调整数组大小,不如考虑预分配数组所需的最大空间量。有关更多信息,请参见预先配置.
矢量化——与其编写基于循环的代码,不如考虑使用MATLAB矩阵和矢量运算。有关更多信息,请参见向量化.
在循环之外放置独立的操作——如果代码没有对每个操作进行不同的计算
为
或而
循环迭代时,将其移到循环之外以避免冗余计算。如果数据类型发生变化,则创建新变量——创建一个新变量,而不是将不同类型的数据分配给现有变量。更改现有变量的类或数组形状需要额外的处理时间。
使用短路操作符-使用短路逻辑操作符,
& &
而且||
在可能的情况下。短路更有效,因为MATLAB只在第一个操作数不能完全确定结果时才计算第二个操作数。有关更多信息,请参见逻辑运算符:短路
.避免使用全局变量—尽量减少全局变量的使用是一个很好的编程实践,而全局变量会降低MATLAB代码的性能。
避免内置函数重载-避免在任何标准MATLAB数据类上重载内置函数。
避免使用“数据作为代码”—如果您有大量代码(例如,超过500行)生成常量值的变量,请考虑构造变量并将它们保存在mat文件或其他文件中
. csv
文件。然后可以加载变量,而不是执行代码来生成它们。
具体的建议MATLAB功能
在编写性能关键代码时,考虑以下关于特定MATLAB函数的提示。
避免清除不必要的代码。不要使用
清除所有
以编程方式。有关更多信息,请参见清晰的
.避免使用查询MATLAB状态的函数,例如
inputname
,哪一个
,谁
,存在(
,var
)dbstack
.运行时内省的计算开销很大。避免使用以下函数
eval
,evalc
,evalin
,函数宏指令(
.使用函数句柄输入到帧
)函数宏指令
只要有可能。从文本中间接计算MATLAB表达式的计算开销很大。避免编程使用
cd
,目录
,rmpath
,如果可能的话。在运行时更改MATLAB路径会导致代码重新编译。