主要内容

表现

降低内存使用率,提高生成代码的执行速度

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

您可以配置代码执行配置文件以确定生成的代码是否符合目标硬件的实时要求和需要内存使用或执行速度改进的代码部分。您还可以使用代码生成顾问检查模型的当前配置是否针对调试或代码执行进行了优化。

万博1manbetxSimulink配置参数

话题

代码优化基础知识

增加代码生成速度

更改模型以增加代码生成器生成代码的速度。

优化工具和技术

应用工具,例如模型顾问,以及优化代码生成模型的技术。

控制编译器优化

在Simulink UI级别控制Makefile的编译器优化。万博1manbetx

防御计划

子正数执行速度

由于子正数计算延迟,最小化执行减速或溢出的可能性。

从浮点删除代码到整数转换,包装超出范围的值

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

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

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

禁用数学函数的非小型检查或内联

使用代码替换库(CRL)自定义表项来选择性地禁用数学函数的非小型检查和数学函数的内联。

数据复制减少

在块输出时最小化用于中间结果的计算和存储

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

折叠表达式

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

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

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

为总线信号生成有效的代码

模型总线以最大限度地提高生成的代码的效率。

内联不变信号

使用不变信号的数值而不是生成的代码中的符号名称。

使用Memcpy函数优化导航赋值的生成代码

代码生成器通过替换来优化导航分配的生成的代码为了循环梅检函数调用。

为总线信号生成有效的代码

模型总线以最大限度地提高生成的代码的效率。

内存使用情况

矢量操作优化

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

降低布尔和状态配置变量的内存使用情况

减少存储状态配置变量的内存量布尔基变量。

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

Memset.功能清除内部存储,无论类型如何,到整数位模式0(即,所有位都关闭)。

自定义堆栈空间分配

控制最大允许的堆栈大小,以提供一些控制数据是否在生成的代码中本地或全局定义。

配置循环展开阈值

从默认值开始为5,代码生成器开始使用a为了循环而不是单独的语句,以将值分配给信号或参数阵列的元素。

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

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

通过指定块参数的数据类型来生成有效的代码

要生成更高效的代码,请使用信号数据类型匹配参数数据类型或以较小的数据类型存储参数。

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

代码生成器通过存储逻辑信号来优化生成的代码布尔基数据类型。

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

优化代码生成器分配用于经过的时间或绝对时间的内存。

执行速度

通过组合构造来优化生成的代码

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

配置循环展开阈值

从默认值开始为5,代码生成器开始使用a为了循环而不是单独的语句,以将值分配给信号或参数阵列的元素。

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

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

浮点乘法处理净斜率校正

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

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

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

块参数的内联数值

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

使用带有Simulink®,equenfflow®和MATLAB®的固定点数据优化生成的代码万博1manbetx

在Simulink,StateFlow中生成固定点代码万博1manbetx®和matlab.®

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

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

使用条件输入分支执行

为了转变多端口交换机块,Simuli万博1manbetxnk仅执行计算控制输入和控制输入选择的数据输入的块。

优化生成的复杂信号代码

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

在MATLAB功能块生成的代码中加速线性代数

生成Lapack呼叫Matlab功能块中的某些线性代数函数。指定要使用的Lapack库。

在MATLAB功能块生成的代码中加快矩阵操作

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

加快从MATLAB功能块生成的代码中的快速傅里叶变换

生成FFTW库调用Fast Fourier变换Matlab功能堵塞。指定FFTW库。

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

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

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

禁用动态内存分配或指定动态内存分配阈值Matlab功能块。

代码执行分析

为生成的代码执行分析

使用代码执行分析来观察代码执行速度。