主要内容

优化生成的 C/C++ 和 MEX 代码

默认情况下,从 MATLAB® 代码生成 C/C++ 代码或 MEX 函数时,MATLAB Coder™ 会进行优化。有关详细信息,请参阅MATLAB Coder 对生成代码进行优化

要进一步优化生成的代码,您可以:

  • 调整您的 MATLAB 代码。

  • 从命令行或工程设置对话框使用配置对象控制代码生成。

代码优化是使用 MATLAB Coder 进行代码生成的概述中的可选步骤。

优化速度的策略

使用下表确定如何优化生成代码的执行速度。

条件操作
您的代码有 for 循环,这些循环的迭代相互独立。

使用并行 for 循环 (parfor) 的算法加速

Automatic Parallelization of for-Loops in the Generated Code

您的 MATLAB 代码中有可变大小数组。最小化动态内存分配
您的 MATLAB 代码中有多个可变大小数组。您要为较大的数组使用动态内存分配,为较小的数组使用静态内存分配。设置动态内存分配阈值
您要按引用传递生成代码中的变量。避免在生成的代码中存在函数输入的数据副本
您要通过内联大多数或全部函数,以牺牲内存使用量为代价来最大化速度。Control Inlining to Fine-Tune Performance and Readability of Generated Code
您不希望为仅包含常量的表达式生成代码。在生成的代码中将函数调用折叠为常量
您的 MATLAB 代码中的循环运算不依赖于循环索引。Minimize Redundant Operations in Loops
您在 MATLAB 代码中有整数运算,并且您知道在执行生成的代码期间不会发生整数溢出。Disable Support for Integer Overflow
您知道生成的代码不使用非有限数Disable Support for Nonfinite Numbers
您的代码有迭代次数很少的 for 循环。Unroll for-Loops and parfor-Loops
您已针对目标环境优化了原有 C/C++ 代码。Integrate External/Custom Code
您希望加快为基本向量和矩阵函数生成的代码的执行速度。Speed Up Matrix Operations in Generated Standalone Code by Using BLAS Calls
您希望加快为线性代数函数生成的代码的执行速度。Speed Up Linear Algebra in Generated Standalone Code by Using LAPACK Calls
您希望加速为快速傅里叶变换 (FFT) 函数生成的代码。Speed Up Fast Fourier Transforms in Generated Standalone Code by Using FFTW Library Calls

优化内存使用量的策略

使用下表确定如何优化生成代码的内存使用量。

条件操作
您的 MATLAB 代码使用条件语句,但在生成的代码中不需要使用这些语句的某些分支。Prevent Code Generation for Unused Execution Paths
您要按引用传递生成代码中的变量。避免在生成的代码中存在函数输入的数据副本
代码生成目标上的堆栈空间受限。Control Stack Space Usage
由于您在代码生成目标上的内存受限,您要避免使用许多变量的内联函数。Control Inlining to Fine-Tune Performance and Readability of Generated Code
您不希望为仅包含常量的表达式生成代码。在生成的代码中将函数调用折叠为常量
您的 MATLAB 代码中的循环运算不依赖于循环索引。Minimize Redundant Operations in Loops
您在 MATLAB 代码中有整数运算,并且您知道在执行生成的代码期间不会发生整数溢出。Disable Support for Integer Overflow
您知道生成的代码不使用非有限数Disable Support for Nonfinite Numbers
您要优化大型结构体或数组变量的内存使用量,即使这会降低代码的可读性。Reuse Large Arrays and Structures

另请参阅

主题