主要内容

技术来提高性能

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

环境

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

代码结构

而组织代码:

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

  • 喜欢当地的函数在嵌套的函数。使用这种做法特别是函数不需要访问变量在主函数。

  • 使用模块化编程。避免与很少大文件和文件访问代码,代码分割成简单和有凝聚力的功能。这种做法可以减少初次运行成本。

编程实践的性能

考虑这些编程实践来改善代码的性能。

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

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

  • 独立操作外循环,如果代码不与每个评估不同外循环迭代,移动它的循环,以避免冗余计算。

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

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

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

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

  • 避免使用“数据代码”——如果你有大部分的代码(例如,超过500行),生成变量与常量值,考虑构造变量和拯救他们,例如,在一个MAT-file或. csv文件。然后你可以加载变量而不是执行代码来生成它们。

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

  • 在GPU上运行代码或并行——如果你有一个并行计算工具箱™许可证,GPU通过运行代码gpuArray数据支持函数或并行运金宝app行代码的使用,例如,一个parfor循环。有关更多信息,请参见选择一个并行计算解决方案(并行计算工具箱)

建议在特定MATLAB功能

写作时考虑以下建议特定的MATLAB函数性能关键代码。

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

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

  • 避免等功能eval,evalc,evalin,函数宏指令()。使用这个函数处理输入函数宏指令只要有可能。间接地评估一个MATLAB表达式从文本计算昂贵。

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

相关的话题