主要内容

表演

减少内存使用并提高生成代码的执行速度

在开发Simulink时万博1manbetx®要从中生成代码的模型,请使用模型配置参数来减少RAM和ROM消耗,并加快代码执行。如果您想要更多的防御代码,以牺牲一些效率为代价,您可以禁用其中一个或多个参数。

您可以配置代码执行评测,以确定生成的代码是否满足需要内存使用或执行速度提高的目标硬件和代码段的实时要求。您还可以使用代码生成顾问检查模型的当前配置是否针对调试或代码执行进行了优化。

万博1manbetxSimulink配置参数

话题

代码优化基础

提高代码生成速度

更改模型以提高代码生成器生成代码的速度。

优化工具和技术

应用工具(如ModelAdvisor)和技术来优化模型以生成代码。

控制编译器优化

在Simulink UI级别控制生成文件的编译器优化。万博1manbetx

防御性编程

次正常数执行速度

尽可能减少由于低于正常数字计算延迟而导致执行速度减慢或溢出的可能性。

删除超出范围的浮点到整数转换的代码

如果应用程序中的输入值在输出类型的范围内,请删除超出范围的浮点到整数转换代码。

删除将NaN映射为整数零的代码

如果输入如果应用程序中不存在,请指定代码生成器删除映射的代码到整数零。

禁用数学函数的非限制检查或内联

使用代码替换库(CRL)自定义项有选择地禁用数学函数的非限制检查和数学函数的内联。

数据拷贝缩减

最大限度地减少块输出中间结果的计算和存储

代码生成器将块计算折叠为单个表达式,而不是为模型中的每个块生成单独的代码语句和存储声明。

折叠表达式

表达式折叠代码,以最小化块输出处中间结果的计算,并将此类结果存储在临时缓冲区或变量中。

在生成的代码中启用并重用本地块输出

在可能的情况下,代码生成器将块输出声明为局部变量,以便可以潜在地重用这些变量。

为总线信号生成有效代码

对总线进行建模,以最大限度地提高生成代码的效率。

内联不变信号

在生成的代码中使用不变信号的数值,而不是它们的符号名。

使用memcpy函数优化向量分配的生成代码

代码生成器通过替换对于循环memcpy函数调用。

为总线信号生成有效代码

对总线进行建模,以最大限度地提高生成代码的效率。

内存使用

向量运算优化

代码生成器通过用局部变量替换临时局部数组来减少堆栈内存。

减少布尔和状态配置变量的内存使用

减少存储状态配置变量和布尔值变量。

使用memset函数优化生成的代码

这个清零函数将内部存储器(无论类型如何)清除为整数位模式0(即所有位均关闭)。

自定义堆栈空间分配

控制允许的最大堆栈大小,以提供对数据是在生成的代码中本地定义还是全局定义的某种控制。

配置循环展开阈值

从默认值5开始,代码生成器开始使用对于循环而不是单独的语句来为信号或参数数组的元素赋值。

为嵌入式应用程序指定单精度数据类型

生成浮点数据类型仅为单精度的代码,例如,用于针对单精度处理器。

通过为块参数指定数据类型生成高效代码

要生成更高效的代码,请将参数数据类型与信号数据类型匹配,或将参数存储在较小的数据类型中。

使用逻辑信号的布尔数据优化生成的代码

代码生成器通过将逻辑信号存储为布尔值数据类型。

优化时间计数器的内存使用

优化代码生成器为已用时间或绝对时间分配的内存。

执行速度

通过组合多个for构造优化生成的代码

代码生成器使用数据依赖性分析进行组合对于构造以减少静态代码大小和运行时分支。

配置循环展开阈值

从默认值5开始,代码生成器开始使用对于循环而不是单独的语句来为信号或参数数组的元素赋值。

消除生成代码中的死代码路径

代码生成器从生成的代码中消除死(即未使用的)代码路径。

处理净斜率校正的浮点乘法

对于支持高效乘法的处理器,通过使用浮点乘万博1manbetx法处理净斜率校正来提高代码效率。

删除对计算结果没有影响的块的代码

代码生成器通过删除不影响计算结果的代码来提高执行速度并减少ROM消耗。

块参数的内联数值

通过内联块参数的文字数字值来减少全局RAM使用。

使用Simulink、Stateflow和MATLAB使用定点数据优化生成的代码万博1manbetx

在Simulink、Stateflow中生成定点代码万博1manbetx®,以及MATLAB®.

在算法代码中生成目标优化

使用特定于目标的优化定制生成的算法代码。

使用条件输入分支执行

对于转换多端口开关块,Simuli万博1manbetxnk仅执行计算控制输入和控制输入选择的数据输入的块。

优化复杂信号的生成代码

代码生成器对表示生成代码中信号的结构执行各种优化。

用MATLAB函数块生成的代码加速线性代数

在MATLAB函数块中为某些线性代数函数生成LAPACK调用。指定要使用的LAPACK库。

从MATLAB功能块生成的代码中加速矩阵运算

为某些低级矩阵操作生成BLAS调用。指定要使用的BLAS库。

在MATLAB函数块生成的代码中加速快速傅里叶变换

生成FFTW库调用,以便在MATLAB函数块指定FFTW库。

在MATLAB功能块生成的代码中同步多线程FFTW规划

实现FFT库回调类方法,并提供支持的C代码,以防止并发访问FFTW规划。万博1manbetx

MATLAB功能块中可变大小阵列的控制内存分配

禁用动态内存分配或为指定动态内存分配阈值MATLAB函数阻碍。

利用定点数据优化信号处理算法的速度和规模

建立了一个定点噪声消除器模型。

从Simulink块生成SIMD代码万博1manbetx

使用“英特尔SSE”和“英特尔AVX”技术提高生成代码的执行速度。

代码执行评测

生成代码的执行评测

使用代码执行评测来观察代码执行速度。