Main Content

生成されたコードのパフォーマンス評価

生成されたコードの特性と RAM/ROM データが、どのように RAM/ROM メトリクスに影響するかについて説明します。

モデル例とこのシリーズの他の例の詳細については、C コード生成のためのコントロール アルゴリズム モデルの準備を参照してください。

コードの評価

生成したコードは、"実行速度" と "メモリ使用量" という 2 つのメトリクスに基づいて評価できます。場合によって、あるメトリクスを改善した結果、他のメトリクスが犠牲になることがあります。たとえば、メモリをより多く消費すると、実行速度が向上することはよくあります。

メモリ使用は ROM (読み取り専用メモリ) と RAM (ランダム アクセス メモリ) に分類できます。

  • RAM のデータへのアクセスは、ROM のデータへのアクセスよりも高速です。

  • 実行可能ファイルとデータは ROM に格納しなければなりません。なぜなら、電源のオン/オフで RAM のデータは失われるからです。

この例では、メモリ要件を評価し、メモリ使用を関数部分とデータ部分に分割します。この例では、実行速度は評価しません。

コンパイラ情報

この評価では、Freescale™ CodeWarrior® コンパイラを使用します。

  • コンパイラ:Freescale™ CodeWarrior®

  • Version:5.5.1.1430

  • ターゲット プロセッサ:Power PC 565

コード メトリクスの表示

Simulink 環境外での統合コードの作成および生成コードのテストに述べるように、生成されたコードにはユーティリティ関数の使用が必要になることがあります。ユーティリティ関数により、1 回限りの固定的なメモリ コストが生じます。この固定的オーバーヘッドにより、この例のデータには、次のメモリ使用が示されます。

  • アルゴリズム: Simulink® ブロック線図から生成された C コードとデータ定義関数

  • ユーティリティ: Simulink® Coder™ ライブラリ ソースの一部である関数

  • 完全: アルゴリズムとユーティリティの合計

ビルド オプションのコンフィギュレーション

この例の 3 つの評価は、同じビルド構成を使用しています。Freescale™ CodeWarrior® は、メモリ使用量を最小限に抑え、使用可能なすべての最適化を適用するように構成しました。

コンフィギュレーション 1: データ型が double の再利用可能な関数

  • ソース ファイル:PCG_Eval_File_1.zip

  • データ型:すべて double

  • インクルードしたデータ:プロジェクトには、ビルドが必要とするすべてのデータ (extern:pos_rqstfbk_1fbk_2として宣言されたデータを含む) が含まれます。

  • メイン関数:Simulink 環境外での統合コードの作成からのexample_mainの変更済みバージョン

  • 関数呼び出し方法:PI コントローラー用の再利用可能な関数

メモリ使用量

函数数据算法1172字节549字节跑龙套ities 592 bytes 40 bytes Full 1764 bytes 589 bytes

コンフィギュレーション 2: データ型 single の再利用可能な関数

この構成では、モデル データは、倍精度ではなく単精度浮動小数点データ型を使用します。

モデル コンフィギュレーション

  • ソース ファイル:PCG_Eval_File_2.zip

  • データ型:すべて単精度

  • インクルードしたデータ:プロジェクトには、ビルドが必要とするすべてのデータ (extern:pos_rqstfbk_1fbk_2として宣言されたデータを含む) が含まれます。

  • メイン関数:Simulink 環境外での統合コードの作成からのexample_mainの変更済みバージョン

  • 関数呼び出し方法:PI コントローラー用の再利用可能な関数

メモリ使用量

Function Data Algorithms 800 bytes 308 bytes Utilities 592 bytes 40 bytes Full 1392 bytes 348 bytes

この構成は、最初の構成と比べて、わずか 56% のデータ メモリしか使用しません。つまり、データ メモリは 549 バイトから 308 バイトに減少しました。また、この構成では関数メモリ使用量も 68% です。1172 バイトから 800 バイトに減少しました。このシステムでは、倍精度の代わりに単精度を使用しても、制御アルゴリズムの精度に影響しないため、この構成を使用してコードを効率化できます。

コンフィギュレーション 3: データ型 single の再利用不可能な関数

  • ソース ファイル:PCG_Eval_File_3.zip

  • データ型:すべて単精度

  • インクルードしたデータ:プロジェクトには、ビルドが必要とするすべてのデータ (extern:pos_rqstfbk_1fbk_2として宣言されたデータを含む) が含まれます。

  • メイン関数:Simulink 環境外での統合コードの作成からのexample_mainの変更済みバージョン

  • 関数呼び出し方法:関数インターフェイスはvoid voidであるため、グローバル変数においてデータ交換が行われます。

メモリ使用量

Function Data Algorithms 948 bytes 348 bytes Utilities 592 bytes 40 bytes Full 1540 bytes 388 bytes

この構成は前の構成と比べて、データ メモリと関数メモリを多く消費します。

関連するトピック