重用全局模块输出
重用全局变量的优化
模型配置窗格: 代码生成 / 优化
描述
此重用全局模块输出参数指示代码生成器尽可能对模块输出重用全局内存。
依赖关系
此参数由信号存储重用启用。
设置
on (默认) | off- On
代码生成器尽可能重用信号内存,从而减少全局变量的使用。
- Off
信号存储在唯一位置。
示例
减少 ROM 和 RAM 的消耗量和数据副本,提高生成代码的执行速度。通过选择模型配置参数重用全局模块输出,将代码生成器配置为重用全局变量。
示例模型
在命令行窗口中,打开 GlobalReuse 模型。
model='GlobalReuse'; open_system('GlobalReuse')

生成代码但不进行优化
在“配置参数”对话框中,确认信号存储重用处于选中状态。
在代码生成 > 报告窗格上,确认生成静态代码度量处于选中状态。
清除重用全局模块输出,然后点击应用。您也可以通过编程方式设置此参数:
set_param(model,'GlobalBufferReuse', 'off');
按 Ctrl+B 生成代码。
slbuild(model);
### Searching for referenced models in model 'GlobalReuse'. ### Total of 1 models to build. ### Starting build procedure for: GlobalReuse ### Successful completion of build procedure for: GlobalReuse Build Summary Top model targets: Model Build Reason Status Build Duration ============================================================================================================== GlobalReuse Information cache folder or artifacts were missing. Code generated and compiled. 0h 0m 7.365s 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 8.5208s
查看生成的代码而不进行优化。这是 GlobalReuse.c 的一部分。
cfile = fullfile('GlobalReuse_ert_rtw','GlobalReuse.c'); coder.example.extractLines(cfile,'/* Model step','/* Model initialize',1, 0);
/* Model step function */
void GlobalReuse_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 字节。
生成代码并进行优化
在“配置参数”对话框中,选择重用全局模块输出,然后点击应用。您也可以通过编程方式设置此参数:
set_param(model,'GlobalBufferReuse', 'on');
生成代码。
slbuild(model);
### Searching for referenced models in model 'GlobalReuse'. ### Total of 1 models to build. ### Starting build procedure for: GlobalReuse ### Successful completion of build procedure for: GlobalReuse Build Summary Top model targets: Model Build Reason Status Build Duration ========================================================================================== GlobalReuse Generated code was out of date. Code generated and compiled. 0h 0m 6.3761s 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 6.7702s
查看优化后的生成代码。这是 GlobalReuse.c 的一部分。
cfile = fullfile('GlobalReuse_ert_rtw','GlobalReuse.c'); coder.example.extractLines(cfile,'/* Model step','/* Model initialize',1, 0);
/* Model step function */
void GlobalReuse_step(void)
{
/* Sum: '<Root>/Sum' incorporates:
* Delay: '<Root>/Delay'
* Inport: '<Root>/In1'
*/
rtY.Out1 += rtU.In1;
}
代码生成器消除了一个数据副本,将两个语句减少为一个语句,并将三个全局变量减少为两个全局变量。
打开静态代码度量报告。对于全局变量,此优化将对全局变量的读写总数从 8 减少到 5,总大小从 32 字节减少到 24 字节。
bdclose(model)
推荐的设置
| 应用情形 | 设置 |
|---|---|
| 调试 | Off |
| 可追溯性 | Off |
| 效率 | On(执行,ROM,RAM) |
| 安全预警 | 无影响 |
编程用法
参数: GlobalBufferReuse |
类型: character vector |
值:'on' | 'off' |
默认值:'on' |
版本历史记录
在 R2014a 中推出
另请参阅
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)