主要内容

提高工作表现的技巧

为了加快代码的性能,可以考虑以下技术。

环境

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

代码结构

在组织代码时:

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

  • 优先使用局部函数而不是嵌套函数。使用这种做法,特别是当函数不需要访问主函数中的变量时。

  • 使用模块化编程。要避免大文件和包含不常访问代码的文件,请将代码分割为简单且内聚的函数。这种做法可以减少首次运行的成本。

关于性能的编程实践

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

  • 预分配——与其不断地调整数组大小,不如考虑预分配数组所需的最大空间量。有关更多信息,请参见预先配置

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

  • 在循环之外放置独立的操作——如果代码没有对每个操作进行不同的计算循环迭代时,将其移到循环之外以避免冗余计算。

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

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

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

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

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

  • 在后台运行代码-使用parfevalbackgroundPool在后台运行一个函数。你可以同时在MATLAB中运行其他代码,使你的应用程序反应更快。有关更多信息,请参见在后台运行函数

  • 在GPU或并行上运行代码——如果您拥有并行计算工具箱™许可证,请通过传递在GPU上运行代码gpuArray数据传输到受支持的函万博1manbetx数或并行运行代码,例如使用parfor循环。有关更多信息,请参见选择一个并行计算解决方案(并行计算工具箱)

具体的建议MATLAB功能

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

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

  • 避免使用查询MATLAB状态的函数,例如inputname哪一个存在(var,dbstack.运行时内省的计算开销很大。

  • 避免使用以下函数evalevalcevalin,函数宏指令(.使用函数句柄输入到函数宏指令只要有可能。从文本中间接计算MATLAB表达式的计算开销很大。

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

相关的话题