Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

生成コードでのグローバル ブロック出力の再利用

ROM と RAM の消費量とデータ コピーを削減し、生成コードの実行速度を向上させます。モデル コンフィギュレーション パラメーター [グローバル ブロック出力の再利用] を選択することで、グローバル変数を再利用するようにコード ジェネレーターを設定します。

コマンド ウィンドウで「rtwdemo_reuse_global」と入力します。

最適化を使用しないコードの生成

  1. [コンフィギュレーション パラメーター] ダイアログ ボックスで、[信号ストレージの再利用] が選択されていることを確認します。

  2. [グローバル ブロック出力の再利用] をオフにして、[適用] をクリックします。

  3. [コード生成]、[レポート] ペインで、[静的コード メトリクスの生成] を選択します。

  4. システムの一時フォルダー内で、ビルドと検査プロセス用のフォルダーを作成します。

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 13.072s

最適化を行わない生成コードを表示します。ここで 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 バイトです。

最適化の有効化とコードの生成

  1. [コンフィギュレーション パラメーター] ダイアログ ボックスで、[グローバル ブロック出力の再利用] を選択し、[適用] をクリックします。

  2. コードを生成します。

  3. 最適化を行った生成コードを表示します。ここで 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 13.004s

/* Model step function */
void rtwdemo_reuse_global_step(void)
{
  /* Sum: '<Root>/Sum' incorporates:
   *  Delay: '<Root>/Delay'
   *  Inport: '<Root>/In1'
   */
  rtY.Out1 += rtU.In1;
}

コード ジェネレーターはデータ コピーを排除し、ステートメントの数を 2 つから 1 つに、グローバル変数の数を 3 つから 2 つに削減します。

静的コード メトリクス レポートを開きます。グローバル変数については、この最適化によってグローバル変数に対する読み取りおよび書き込みの合計回数が 8 回から 5 回に、合計サイズは 32 バイトから 24 バイトに削減されます。

参考

関連するトピック