性能
减少内存使用并提高生成代码的执行速度
在开发Simulink时万博1manbetx®使用模型配置参数来减少RAM和ROM的消耗并加速代码的执行。如果您想要更多的防御代码,以牺牲一些效率为代价,您可以禁用其中一个或多个参数。
您可以配置代码执行分析,以确定生成的代码是否满足目标硬件和需要内存使用或执行速度提高的代码段的实时需求。您还可以使用代码生成顾问来检查模型的当前配置是否为调试或代码执行进行了优化。
模型设置
主题
代码优化基础
- 提高代码生成速度
更改模型以提高代码生成器生成代码的速度。 - 使用代码效率工具和技术优化生成的代码
应用工具,例如模型顾问和技术来优化代码生成的模型。 - 控制编译器优化
在Simulink UI级别控制makefile的编译器优化。万博1manbetx
防御性编程
- 非正常号码执行速度
尽量减少由于非正常的数字计算延迟而导致的执行放缓或溢出的可能性。 - 删除超出范围浮点到整数转换的代码
如果应用程序中的输入值在输出类型的范围内,请删除超出范围的浮点到整数转换的代码。 - 删除将NaN映射为整数0的代码
如果输入的值为南
不存在于您的应用程序中,请指定代码生成器删除映射的代码南
到整数0。 - 禁用数学函数的非有限检查或内联
使用代码替换库(CRL)自定义条目有选择地禁用数学函数的非有限检查和数学函数的内联。
减少数据拷贝
- 最小化块输出的中间结果的计算和存储
代码生成器将块计算折叠到单个表达式中,而不是为模型中的每个块生成单独的代码语句和存储声明。 - 褶皱的表情
表达式折叠代码,以最小化块输出时的中间结果的计算以及这些结果在临时缓冲区或变量中的存储。 - 在生成的代码中启用和重用本地块输出
在可能的情况下,代码生成器将块输出声明为局部变量,以便可能重用这些变量。 - 为公交信号生成高效代码
建模总线以最大化生成代码的效率。 - 内联不变信号
在生成的代码中使用不变信号的数值代替其符号名称。 - 使用memcpy函数优化生成的向量赋值代码
代码生成器通过替换来优化生成的代码为
循环与memcpy
函数调用。 - 为公交信号生成高效代码
建模总线以最大化生成代码的效率。
内存使用情况
- 矢量操作优化
代码生成器通过用局部变量替换临时的局部数组来减少堆栈内存。 - 减少布尔值和状态配置变量的内存使用
减少存储状态配置变量和的内存量布尔
变量。 - 使用memset函数优化生成的代码
的memset
函数将内部存储清除为整数位模式0(即所有位都关闭),无论类型如何。 - 自定义堆栈空间分配
控制最大允许的堆栈大小,以在生成的代码中对数据是本地定义还是全局定义提供一些控制。 - 配置环路展开阈值
从默认值5开始,代码生成器开始使用为
循环而不是单独的语句来为信号或参数数组的元素赋值。 - 为嵌入式应用程序指定单精度数据类型
生成浮点数据类型仅为单精度的代码,例如,针对单精度处理器。 - 通过指定块参数的数据类型生成有效的代码
要生成更高效的代码,请将参数数据类型与信号数据类型匹配,或将参数存储在更小的数据类型中。 - 使用逻辑信号的布尔数据优化生成的代码
代码生成器通过将逻辑信号存储为来优化生成的代码布尔
数据类型。 - 优化时间计数器的内存使用
优化代码生成器为运行时间或绝对时间分配的内存。
执行速度
- 通过组合多个结构优化生成的代码
代码生成器使用数据依赖分析进行组合为
构造以减少静态代码大小和运行时分支。 - 配置环路展开阈值
从默认值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
使用Intel提高生成代码的执行速度®SSE和英特尔AVX技术。 - 用SIMD优化约简运算代码
使用SIMD指令集生成简化操作的优化代码。
代码执行分析
- 生成代码的执行分析
使用代码执行分析来观察代码执行速度。