主要内容

执行速度

提高生成的 C/C++ 代码的执行速度

利用代码生成选项和优化来提高所生成代码的执行速度。您可以修改或禁用可能会影响执行速度的动态内存分配。可以使用 parfor 循环生成并行代码。如果可用,可以利用预先存在的经过优化的 C 代码和专用库来加快执行速度。

有关如何针对特定条件优化代码的详细信息,请参阅优化生成的 C/C++ 和 MEX 代码

函数

全部展开

coder.timeitMeasure execution time of generated C/C++ code (自 R2024b 起)
coder.perfCompareCompare execution times of MATLAB code and code generated using multiple configuration objects (自 R2024b 起)
coder.loop.interchangeInterchange loop indices in generated code (自 R2023a 起)
coder.loop.parallelizeParallelize specific for loops in generated code; disable automatic parallelization (自 R2021a 起)
coder.loop.reverseReverse loop iteration order in generated code (自 R2023a 起)
coder.loop.tileTile for-loops in the generated code (自 R2023a 起)
coder.loop.unrollAndJamUnroll and jam for-loops in the generated code (自 R2023a 起)
coder.loop.vectorizeVectorize for loops in generated code (自 R2023a 起)
coder.unroll通过为每次循环迭代生成循环体的副本来展开 for 循环
parfor并行 for 循环
coder.inline控制生成代码中当前函数的内联
coder.inlineCall在生成的代码中内联被调函数 (自 R2024a 起)
coder.nonInlineCall防止在生成的代码中内联被调函数 (自 R2024a 起)
coder.areUnboundedVariableSizedArraysSupported检查当前配置设置是否允许无界可变大小数组 (自 R2024a 起)
coder.varsize解决大小不兼容性错误并声明上界
coder.const在生成的代码中将表达式折叠为常量
coder.ceval从生成的代码中调用 C/C++ 函数

coder.BLASCallbackAbstract class for specifying the BLAS library and CBLAS header and data type information for BLAS calls in generated code
coder.LAPACKCallbackAbstract class for specifying the LAPACK library and LAPACKE header file for LAPACK calls in generated code
coder.fftw.StandaloneFFTW3Interface 用于指定生成代码中 FFTW 调用的 FFTW 库的抽象类
coder.loop.ControlCustomize loop optimizations in generated code (自 R2023a 起)

主题

生成代码优化

  • 优化生成的 C/C++ 和 MEX 代码
    优化生成的 C/C++ 和 MEX 代码的执行速度或内存使用量。
  • MATLAB Coder 对生成代码进行优化
    代码生成器使用优化来提高生成代码的性能。
  • 优化生成代码中的隐式扩展
    默认情况下,生成代码中的隐式扩展是启用的。代码生成器在生成的代码中引入修改以执行隐式扩展。生成的代码中的更改可能导致额外的代码来扩展操作数。操作数的扩展可能会影响生成代码的性能。请参阅生成启用隐式扩展的代码。

memcpy 和 memset 优化

  • memcpy 优化
    代码生成器通过使用 memcpy 来优化生成的代码。
  • memset 优化
    代码生成器通过使用 memset 来优化生成的代码。

可变大小数组

数组布局

循环

函数调用

数值边缘情形

外部代码集成

疑难解答

parfor 循环故障排除

诊断 parfor 循环的代码生成错误。

Resolve Issue: coder.inline("never") and coder.nonInlineCall Do Not Prevent Function Inlining

Troubleshoot instances of coder.inline('never') not preventing inlining.

MEX Generated on macOS Platform Stays Loaded in Memory

Troubleshoot issues that occur when the source MATLAB code contains global or persistent variables that are reachable from the body of a parfor-loop.

精选示例