使用优化生成的代码memset
函数
方法优化生成的代码memset
命令用于清除内部存储。当您选择模型配置参数时使用memset初始化浮点数和双精度值为0.0,memset
函数将内部存储空间清除为整数位模式0
(也就是说,所有的比特都是关闭的)。
如果编译器和目标CPU都使用整数位模式表示浮点零0
,考虑设置此参数以获得执行和ROM效率。
注意:命令行值与设置值相反。命令行中的“on”对应清除设置。“关闭”
在命令行中对应于选择设置。
这种优化:
减少ROM消耗。
提高执行速度。
示例模型
模型=“rtwdemo_memset”;open_system(模型);
生成代码
代码生成器使用循环来初始化常数
块的值。
为构建和检查过程创建一个临时文件夹(在系统临时文件夹中)。
currentDir = pwd;[~,cgDir] = rtwdemodir();
构建模型。
slbuild(模型)
# # #开始构建过程:rtwdemo_memset # # #成功完成构建过程:rtwdemo_memset模型建立目标:总结构建模型重建行动的理由 ================================================================================================ rtwdemo_memset代码生成和编译。代码生成信息文件不存在。构建1 / 1模型(0个模型已经更新)构建持续时间:0h 0m 18.345s
查看未经过优化的生成代码。这几行代码是插入的rtwdemo_memset.c
.
cfile = fullfile(cgDir,“rtwdemo_memset_grt_rtw”,“rtwdemo_memset.c”);rtwdemodbtype(用/*模型初始化函数*/,.../*模型终止函数*/1 0);
/*模型初始化函数*/ void rtwdemo_memset_initialize(void){/*注册码*/ /*初始化错误状态*/ rtmSetErrorStatus(rtwdemo_memset_M, (NULL));/*外部输出*/ {int32_T i;For (i = 0;I < 50;i++) {rtwdemo_memset_Y。Out1[i] = 0.0;}} {int32_T i;/* ConstCode for Outport: '/Out1' */ for (i = 0;I < 50;i++) {rtwdemo_memset_Y。Out1[i] = 56.0;} /* Outport的ConstCode End: ' /Out1' */}}
启用优化
打开“配置参数”对话框。
在“配置参数”对话框中选择使用memset初始化浮点数和双精度值为0.0参数。或者,你可以使用命令行API来启用优化:
set_param(模型,“InitFltsAndDblsToZero”,“关闭”);% #打开配置参数对话框。
使用优化生成代码
代码生成器使用memset
函数初始化常数
块的值。
构建模型。
slbuild(模型)
# # #开始构建过程:rtwdemo_memset # # #成功完成构建过程:rtwdemo_memset模型建立目标:总结构建模型重建行动的理由 =============================================================================== rtwdemo_memset代码生成和编译。生成的代码已经过时。构建1 / 1模型(0个模型已经更新)构建持续时间:0h 0m 10.503s
查看生成的带有优化的代码。这几行代码是插入的rtwdemo_memset.c
.
rtwdemodbtype(用/*模型初始化函数*/,.../*模型终止函数*/1 0);
/*模型初始化函数*/ void rtwdemo_memset_initialize(void){/*注册码*/ /*初始化错误状态*/ rtmSetErrorStatus(rtwdemo_memset_M, (NULL));/*外部输出*/ (void)memset(&rtwdemo_memset_Y, 0, sizeof(ExtY_rtwdemo_memset_T);{int32_T i;/* ConstCode for Outport: '/Out1' */ for (i = 0;I < 50;i++) {rtwdemo_memset_Y。Out1[i] = 56.0;} /* Outport的ConstCode End: ' /Out1' */}}
关闭模型和代码生成报告。
bdclose rtwdemoclean(模型);cd (currentDir)