提高性能的技术

要提高代码的性能,请考虑以下技术。

环境

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

代码结构

在组织代码时:

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

  • 优先使用本地函数而不是嵌套函数。如果函数不需要访问主函数中的变量,尤其要使用这种做法。

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

性能编程实践

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

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

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

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

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

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

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

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

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

建议在特定MATLAB功能

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

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

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

  • 避免使用以下功能eval,evalc,evalin,函数宏指令()。使用函数句柄输入函数宏指令只要有可能。从文本中间接地求出MATLAB表达式在计算上是很昂贵的。

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

相关的话题