性能
减少内存使用并提高生成代码的执行速度
在开发Simulink时金宝app®使用模型配置参数来减少RAM和ROM消耗,并加快代码执行速度。如果您想要更多的防御性代码,以牺牲一些效率为代价,您可以禁用这些参数中的一个或多个。
您可以配置代码执行概要,以确定生成的代码是否满足需要内存使用或执行速度提高的目标硬件和代码段的实时需求。您还可以使用代码生成顾问来检查模型的当前配置是否为调试或代码执行进行了优化。
模型设置
主题
代码优化基础
- 提高代码生成速度
修改模型以提高代码生成器生成代码的速度。 - 使用代码效率工具和技术优化生成的代码
应用工具(如Model Advisor)和技术来优化用于代码生成的模型。 - 控制编译器优化
在Simulink UI级别控制makefile的编译器优化。金宝app
防御性编程
- 执行速度
尽量减少由于低于正常数字计算延迟而导致的执行速度减慢或溢出的可能性。 - 删除超出范围的浮点到整数转换的代码
如果应用程序中的输入值在输出类型的范围内,请删除超出范围的浮点到整数转换的代码。 - 删除将NaN映射为整数0的代码
如果输入值为南
在您的应用程序中不存在,请指定代码生成器删除映射的代码南
到整数0。 - 禁用数学函数的非有限检查或内联
使用代码替换库(CRL)自定义条目有选择地禁用数学函数的非有限检查和数学函数的内联。
减少数据拷贝
- 最小化块输出中中间结果的计算和存储
代码生成器将块计算折叠成单个表达式,而不是为模型中的每个块生成单独的代码语句和存储声明。 - 褶皱的表情
表达式折叠代码,最大限度地减少块输出时中间结果的计算,并将这些结果存储在临时缓冲区或变量中。 - 在生成的代码中启用和重用本地块输出
在可能的情况下,代码生成器将块输出声明为局部变量,这样它就可以重用这些变量。 - 生成有效的公交信号代码
建模总线以最大化所生成代码的效率。 - 内嵌不变信号
在生成的代码中使用不变信号的数值,而不是它们的符号名称。 - 使用memcpy函数优化生成的矢量赋值代码
代码生成器通过替换来优化生成的向量赋值代码为
循环与memcpy
函数调用。 - 生成有效的公交信号代码
建模总线以最大化所生成代码的效率。
内存使用情况
- 矢量运算优化
代码生成器通过用局部变量替换临时本地数组来减少堆栈内存。 - 减少布尔和状态配置变量的内存使用
减少存储状态配置变量和的内存量布尔
变量。 - 使用memset函数优化生成的代码
的memset
函数将内部存储空间(无论类型)清除到整数位模式0(即所有位都关闭)。 - 自定义堆叠空间分配
控制允许的最大堆栈大小,以在生成的代码中控制数据是在本地定义还是全局定义。 - 配置环路解滚阈值
从默认值5开始,代码生成器开始使用为
循环,而不是单独的语句来为信号或参数数组的元素赋值。 - 为嵌入式应用程序指定单精度数据类型
生成浮点数据类型只有单精度的代码,例如,针对单精度处理器。 - 通过指定块参数的数据类型生成高效的代码
要生成更高效的代码,请将参数数据类型与信号数据类型匹配,或将参数存储在更小的数据类型中。 - 使用逻辑信号的布尔数据优化生成的代码
代码生成器通过将逻辑信号存储为来优化生成的代码布尔
数据类型。 - 优化时间计数器的内存使用
优化代码生成器为运行时间或绝对时间分配的内存。
执行速度
- 通过组合多个结构优化生成的代码
代码生成器使用数据依赖分析进行组合为
构造来减少静态代码大小和运行时分支。 - 配置环路解滚阈值
从默认值5开始,代码生成器开始使用为
循环,而不是单独的语句来为信号或参数数组的元素赋值。 - 消除生成代码中的死代码路径
代码生成器从生成的代码中消除死的(即未使用的)代码路径。 - 浮点乘法处理净斜率修正
对于支持高效乘法的处理器,可以通过使用浮金宝app点乘法处理净斜率修正来提高代码效率。 - 删除对计算结果没有影响的块的代码
代码生成器通过删除不影响计算结果的代码来提高执行速度并减少ROM消耗。 - 块参数的内联数值
通过内联块参数的文字数值来减少全局RAM使用。 - 使用Simulink、statflow和MATLAB中的定点数据优化生成的代码金宝app
在Simulink、statflow中生成定点代码金宝app®, MATLAB®. - 在算法代码中生成目标优化
使用特定于目标的优化自定义生成的算法代码。 - 使用条件输入分支执行
为开关而且多端口切换块,Simuli金宝appnk只执行计算控制输入和控制输入选择的数据输入的块。 - 优化复杂信号的生成代码
代码生成器对所生成代码中表示信号的结构执行各种优化。 - 加速从MATLAB函数块生成的代码中的线性代数
生成LAPACK调用的某些线性代数函数在MATLAB函数块。指定要使用的LAPACK库。 - 加速从MATLAB函数块生成的代码中的矩阵运算
为某些低级矩阵操作生成BLAS调用。指定要使用的BLAS库。 - 加速从MATLAB函数块生成的代码中的快速傅里叶变换
生成FFTW库调用快速傅里叶变换MATLAB函数块。指定FFTW库。 - 同步多线程FFTW规划从MATLAB函数块生成的代码
实现FFT库回调类方法,并提供支持的C代码,以防止并行访问FFTW规划。金宝app - 在MATLAB函数块中控制可变大小数组的内存分配
禁用动态内存分配或指定动态内存分配阈值MATLAB函数块。 - 利用定点数据优化信号处理算法的速度和规模
建模一个定点声学噪声消除器。 - 从Simulink块生成SIMD代码金宝app
使用Intel SSE和Intel AVX技术提高生成代码的执行速度。 - 利用SIMD优化约简运算代码
使用SIMD指令集生成简化操作的优化代码。
代码执行分析
- 生成代码的执行分析
使用代码执行分析来观察代码执行速度。