在生成的代码中重用全局模块输出
减少 ROM 和 RAM 的消耗量和数据副本,提高生成代码的执行速度。通过选择模型配置参数重用全局模块输出,将代码生成器配置为重用全局变量。
示例
在命令行窗口中,键入 rtwdemo_reuse_global。
生成代码但不进行优化
在“配置参数”对话框中,确认信号存储重用已选中。
清除重用全局模块输出,然后点击应用。
在代码生成 > 报告窗格中,选择生成静态代码指标。
在您的系统临时文件夹中,为编译和检查过程创建一个文件夹。
按 Ctrl+B 生成代码。
### Starting build procedure for: rtwdemo_reuse_global ### Successful completion of build procedure for: rtwdemo_reuse_global Build Summary Top model targets built: Model Action Rebuild Reason ====================================================================================================== rtwdemo_reuse_global Code generated and compiled. Code generation information file does not exist. 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 9.5427s
查看生成的代码而不进行优化。这是 rtwdemo_reuse_global.c
的一部分。
/* Model step function */ void rtwdemo_reuse_global_step(void) { /* Sum: '<Root>/Sum' incorporates: * Delay: '<Root>/Delay' * Inport: '<Root>/In1' */ rtDW.Delay_DSTATE += rtU.In1; /* Outport: '<Root>/Out1' incorporates: * Delay: '<Root>/Delay' */ rtY.Out1 = rtDW.Delay_DSTATE; }
生成的代码包含全局变量 rtDW.Delay_DSTATE
的一个数据副本。打开静态代码指标报告。对全局变量的读写总数为 8。总大小为 32 字节。
启用优化和生成代码
在“配置参数”对话框中,选择重用全局模块输出,然后点击应用。
生成代码。
查看优化后的生成代码。这是
rtwdemo_reuse_global.c
的一部分。
### Starting build procedure for: rtwdemo_reuse_global ### Successful completion of build procedure for: rtwdemo_reuse_global Build Summary Top model targets built: Model Action Rebuild Reason ===================================================================================== rtwdemo_reuse_global Code generated and compiled. Generated code was out of date. 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 7.1617s /* Model step function */ void rtwdemo_reuse_global_step(void) { /* Sum: '<Root>/Sum' incorporates: * Delay: '<Root>/Delay' * Inport: '<Root>/In1' */ rtY.Out1 += rtU.In1; }
代码生成器消除了一个数据副本,将两个语句减少为一个语句,并将三个全局变量减少为两个全局变量。
打开静态代码指标报告。对于全局变量,此优化将对全局变量的读写总数从 8 减少到 5,总大小从 32 字节减少到 24 字节。