グローバル ブロック出力の再利用
最適化によるグローバル変数の再利用
モデル コンフィギュレーション ペイン: [コード生成] / [最適化]
説明
[グローバル ブロック出力の再利用] パラメーターは、可能な限りブロック出力用のグローバル メモリを再利用するようにコード ジェネレーターに指示します。
依存関係
このパラメーターは信号ストレージの再利用を選択すると有効になります。
設定
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;
}
コード ジェネレーターはデータ コピーを排除し、ステートメントの数を 2 つから 1 つに、グローバル変数の数を 3 つから 2 つに削減します。
静的コード メトリクス レポートを開きます。グローバル変数については、この最適化によってグローバル変数に対する読み取りおよび書き込みの合計回数が 8 回から 5 回に、合計サイズは 32 バイトから 24 バイトに削減されます。
bdclose(model)
推奨設定
| アプリケーション | 設定 |
|---|---|
| デバッグ | オフ |
| トレーサビリティ | オフ |
| 効率性 | オン (実行、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.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の 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)