技术以提高性能

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

环境

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

代码结构

虽然组织代码:

  • 使用功能,而不是脚本。功能通常要更快一些。

  • 更喜欢嵌套函数的本地函数。特别是如果该函数并不需要访问的变量在主函数中使用这种做法。

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

编程实践性能

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

  • 预分配 - 代替连续地调整大小的阵列,可以考虑预分配为一个阵列所需的空间的最大量。欲了解更多信息,请参阅预分配

  • 矢量化 - 而不是写基于循环的代码,可以考虑使用MATLAB矩阵运算和矢量运算。欲了解更多信息,请参阅矢量

  • 将独立运营外循环 - 如果代码不与每个不同的评估对于要么循环迭代,外移动它的循环,以避免冗余计算。

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

  • 使用短路运营商 - 使用短路逻辑运算符,&&||如果可能。短路是更有效,因为MATLAB计算只有当结果不完全由第一个操作数确定的第二个操作数。欲了解更多信息,请参阅逻辑运算符:短路

  • 避免全局变量 - 尽量减少使用全局变量是一个良好的编程习惯和全局变量可以减少您的MATLAB代码的性能。

  • 避免超载内置插件 - 避免超载内置在任何标准的MATLAB数据类的功能。

  • 避免使用“数据代码” - 如果你的大部分代码(例如,超过500线)产生恒定值的变量,可以考虑构建变量和保存它们,例如,在MAT文件或的.csv文件。然后,你可以加载,而不是执行代码生成它们的变量。

在具体的提示MATLAB功能

写性能关键代码时,要考虑对特定功能的MATLAB以下提示。

  • 避免超过必要清除更多的代码。不使用清除所有编程。欲了解更多信息,请参阅明确

  • 该查询MATLAB的状态,如避免功能inputname哪一个谁是存在(VARdbstack。运行时内省的计算成本高昂。

  • 避免功能,如EVALEVALCevalinfeval(FNAME。使用输入功能手柄feval只要有可能。间接评估基于文本的MATLAB表达式的计算成本高昂。

  • 避免程序中使用的光盘让addpathrmpath, 如果可能。期间重新编译代码运行时间结果改变MATLAB路径。

相关话题