www.gusucode.com > ecoder 案例源码程序 matlab代码 > ecoder/MinimizeGlobalDataAccessExample.m
%% Minimize Global Data Access % Generate optimized code that % reads from and writes to global variables less frequently. %% Example Model % In the model <matlab:rtwdemo_optimize_global>, five signals feed into a % Multiport Switch block. model = 'rtwdemo_optimize_global'; load_system('rtwdemo_optimize_global') %% % <<../rtwdemo_optimize_global.png>> % %% Generate Code without Optimization % % # In the Configuration Parameters dialog box, on the *All Parameters* tab, % verify that the *Signal storage reuse* parameter is selected. % # In the Configuration Parameters dialog box, on the *All Parameters* tab, % for the *Optimize global access* parameter, select |None| or enter the % following command in the MATLAB Command Window: set_param('rtwdemo_optimize_global','GlobalVariableUsage','None'); %% % In your system's temporary folder, create a folder for the % build and inspection process. currentDir = pwd; [~,cgDir] = rtwdemodir(); %% % Build the model. rtwbuild(model); %% % View the generated code without the optimization. Here is a portion of % |rtwdemo_optimize_global.c|. cfile = fullfile(cgDir,'rtwdemo_optimize_global_ert_rtw',... 'rtwdemo_optimize_global.c'); rtwdemodbtype(cfile,'/* Model step','/* Model initialize',1, 0); %% % In the Static Code Metrics Report, examine the |Global Variables| section. %% % # In the Code Generation Report window, select *Static Code Metrics Report*. % # Scroll down to the |Global Variables| section. % # Select the *[+]* sign before each variable to expand it. % % <<../opt_signalsparams_optgbl_none_rpt.png>> % % The total number of reads and writes for global variables is 5. %% Enable Optimization and Generate Code % % On the *All Parameters* tab, for the *Optimize global data access* % parameter, select |Minimize global data access| or enter the following % command in the MATLAB Command Window: set_param('rtwdemo_optimize_global',... 'GlobalVariableUsage','Minimize global data access'); %% % Build the model. rtwbuild(model); %% % View the generated code with the optimization. Here is a portion of % |rtwdemo_optimize_global.c|. cfile = fullfile(cgDir,'rtwdemo_optimize_global_ert_rtw',... 'rtwdemo_optimize_global.c'); rtwdemodbtype(cfile,'/* Model step','/* Model initialize',1, 0); %% % In |rtwdemo_optimize_global.c|, the code assigns a constant value to the % local variable |tmp_Out1| in each case statement. The last statement in the % code copies the value of |tmp_Out1| to the global varaible |rtY.Out1|. Fewer % global variable references result in fewer instructions and improved % execution speed. %% % In the *Static Code Metrics Report*, examine the |Global Variables| section. % As a result of minimizing global data accesses, the total number of reads % and writes for global variables has decreased from 5 to 2. % % <<../opt_signalsparams_optgbl_min_rpt.png>> % %% % Close the code generation report. rtwdemoclean; cd(currentDir)