主要内容

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

方法优化生成的代码memset命令用于清除内部存储。当您选择模型配置参数时使用memset初始化浮点数和双精度值为0.0,memset函数将内部存储空间清除为整数位模式0(也就是说,所有的比特都是关闭的)。

如果编译器和目标CPU都使用整数位模式表示浮点零0,考虑设置此参数以获得执行和ROM效率。

注意:命令行值与设置值相反。命令行中的“on”对应清除设置。“关闭”在命令行中对应于选择设置。

这种优化:

  • 减少ROM消耗。

  • 提高执行速度。

示例模型

考虑模型matlab: rtwdemo_memset

模型=“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' */}}

启用优化

  1. 打开“配置参数”对话框。

  2. 在“配置参数”对话框中选择使用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)

另请参阅

相关的话题