Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

优化策略

MATLAB® Coder™ 在从您的 MATLAB 代码生成 C/C++ 代码或 MEX 函数时会进行一定的优化。有关详细信息,请参阅MATLAB Coder 对生成代码进行优化

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

  • 调整您的 MATLAB 代码。

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

要优化生成的代码的执行速度,请针对下列情况根据需要执行相应操作:

条件操作
您有 for 循环,其迭代彼此独立。

使用并行 for 循环 (parfor) 生成代码

Automatically Parallelize for Loops in Generated Code

您的 MATLAB 代码中有可变大小数组。最小化动态内存分配
您的 MATLAB 代码中有多个可变大小数组。您要为较大的数组使用动态内存分配,为较小的数组使用静态内存分配。r
您要通过引用调用生成的函数。Avoid Data Copies of Function Inputs in Generated Code
您正在调用 MATLAB 代码中的小函数。内联代码
您生成的代码的目标内存受限。您要内联小函数并为较大的函数生成单独的代码。Control Inlining to Fine-Tune Performance and Readability of Generated Code
您不希望为仅包含常量的表达式生成代码。Fold Function Calls into Constants
您的 MATLAB 代码中的循环运算不依赖于循环索引。Minimize Redundant Operations in Loops
您的 MATLAB 代码中有整数运算。您事先知道在执行生成的代码期间不会发生整数溢出。Disable Support for Integer Overflow
您事先知道在执行生成的代码期间不会出现 InfNaNDisable 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 代码中有 if/else/elseif 语句或 switch/case/otherwise 语句。您不需要在生成的代码中使用语句的某些分支。Prevent Code Generation for Unused Execution Paths
您要通过引用调用生成的函数。Avoid Data Copies of Function Inputs in Generated Code
您生成的代码的堆栈空间受限。Control Stack Space Usage
您正在调用 MATLAB 代码中的小函数。内联代码
您生成的代码的目标内存受限。您要内联小函数并为较大的函数生成单独的代码。Control Inlining to Fine-Tune Performance and Readability of Generated Code
您不希望为仅包含常量的表达式生成代码。Fold Function Calls into Constants
您的 MATLAB 代码中的循环运算不依赖于循环索引。Minimize Redundant Operations in Loops
您的 MATLAB 代码中有整数运算。您事先知道在执行生成的代码期间不会发生整数溢出。Disable Support for Integer Overflow
您事先知道在执行生成的代码期间不会出现 InfNaNDisable Support for Nonfinite Numbers
您的 MATLAB 代码包含大型数组变量或结构体变量。您的变量不会在生成的代码中重用。它们是保留变量。您希望查看保留大型数组或结构体的变量名称所需的额外内存是否会影响性能。Reuse Large Arrays and Structures