主要内容

提高性能的技术

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

环境

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

代码结构

组织代码:

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

  • 更喜欢嵌套函数的本地功能。特别是如果函数不需要在主函数中访问变量,请使用此操作。

  • 使用模块化编程。为避免具有不经常访问代码的大文件和文件,将代码拆分为简单且凝聚力的功能。这种做法可以减少第一次运行成本。

性能编程实践

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

  • preallocate - 而不是连续调整阵列,请考虑预先释放数组所需的最大空间量。有关更多信息,请参阅预先分配

  • Vectorize - 而不是编写基于循环的代码,请考虑使用MATLAB矩阵和矢量操作。有关更多信息,请参阅矢量化

  • 将独立的操作放在循环外 - 如果代码没有与每个代码进行不同的评估为了要么尽管循环迭代,将其移动到循环之外,以避免冗余计算。

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

  • 使用短路操作员 - 使用短路逻辑运算符,&&||如果可能。短路更有效,因为Matlab仅在第一个操作数未完全确定结果时才评估第二操作数。有关更多信息,请参阅逻辑运算符:短路

  • 避免全局变量 - 最大限度地减少全局变量的使用是一个很好的编程实践,全局变量可以降低MATLAB代码的性能。

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

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

特定提示马铃薯草职能

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

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

  • 避免查询MATLAB状态的函数,如InputName.哪一个谁是存在(var.的), 和DBStack.。运行时间内部升值是计算昂贵的。

  • 避免诸如求解evalc.评价, 和Feval(Fname.的)。使用功能句柄输入到Feval.只要有可能。间接评估来自文本的MATLAB表达式是计算昂贵的。

  • 避免程序使用光盘addpath., 和rmpath., 如果可能。在运行时更改MATLAB路径导致代码重新编译。

相关话题