优化策略
MATLAB®编码器™在生成时引入某些优化C / c++
代码或墨西哥人
函数从你的MATLAB代码。有关更多信息,请参见生成代码中的MATLAB编码器优化.
要进一步优化生成的代码,您可以:
调整你的MATLAB代码。
使用命令行或项目设置对话框中的配置对象控制代码生成。
为了优化生成代码的执行速度,在这些条件下,根据需要执行以下操作:
条件 | 行动 |
---|---|
你有为 -迭代彼此独立的循环。 |
|
在MATLAB代码中有可变大小的数组。 | 最小化动态内存分配 |
在MATLAB代码中有多个可变大小的数组。您希望为较大的数组分配动态内存,而为较小的数组分配静态内存。 | 设置“动态内存分配阈值” |
您希望通过引用调用生成的函数。 | 避免生成代码中函数输入的数据副本 |
在MATLAB代码中调用小函数。 | 内联代码 |
生成的代码的目标内存有限。您希望内联小函数,并为较大的函数生成单独的代码。 | 控制内联以微调生成代码的性能和可读性 |
您不希望为仅包含常量的表达式生成代码。 | 将函数调用转换为常量 |
在MATLAB代码中有不依赖于循环索引的循环操作。 | 最小化循环中的冗余操作 |
在MATLAB代码中有整数运算。您事先知道,在执行生成的代码期间不会发生整数溢出。 | 禁用整数溢出支持 |
你事先就知道正 年代和南 在执行生成的代码期间不会发生。 |
禁用对非有限数的支持 |
你有为 -循环,很少迭代。 |
展开for-Loops和parfor-Loops |
您已经为目标环境优化了遗留C/ c++代码。 | 集成外部/自定义代码 |
您希望加快为基本向量和矩阵函数生成的代码。 | 使用BLAS调用加速独立生成代码中的矩阵运算 |
您希望加快为线性代数函数生成的代码。 | 使用LAPACK调用在生成的独立代码中加速线性代数 |
您希望加快为快速傅里叶变换(FFT)函数生成的代码。 | 通过使用FFTW库调用,在生成的独立代码中加速快速傅立叶变换 |
为了优化生成代码的内存使用,对于这些条件,根据需要执行以下操作:
条件 | 行动 |
---|---|
你有如果/其他/ elseif 语句或switch / case /否则 语句。生成的代码中不需要语句的某些分支。 |
防止为未使用的执行路径生成代码 |
您希望通过引用调用生成的函数。 | 避免生成代码中函数输入的数据副本 |
生成的代码的堆栈空间有限。 | 控制堆栈空间的使用 |
在MATLAB代码中调用小函数。 | 内联代码 |
生成的代码的目标内存有限。您希望内联小函数,并为较大的函数生成单独的代码。 | 控制内联以微调生成代码的性能和可读性 |
您不希望为仅包含常量的表达式生成代码。 | 将函数调用转换为常量 |
在MATLAB代码中有不依赖于循环索引的循环操作。 | 最小化循环中的冗余操作 |
在MATLAB代码中有整数运算。您事先知道,在执行生成的代码期间不会发生整数溢出。 | 禁用整数溢出支持 |
你事先就知道正 - s和南 -s不会在执行生成的代码期间发生。 |
禁用对非有限数的支持 |
你的MATLAB代码的变量是大数组或结构。您的变量不会在生成的代码中重用。他们被保存。您希望了解保存大型数组或结构的变量名所需的额外内存是否会影响性能。 | 重用大型数组和结构 |