Rational® Rhapsody® には、ポート接続用に生成されるコードを最適化するためのオプションがあります。多くのシナリオでは、これによりアプリケーションのパフォーマンスが改善される可能性があります。
注: このフィーチャーは、C++ コードでのみ使用できます。
ポートがモデルで使用される場合、一連の非振る舞いポートが互いに接続され、呼び出しが一方のエンドから他方のエンドに委譲されるような状態がよく生じます。この結果、実行時パフォーマンスが低下し、アプリケーションのデバッグが困難になります。
この種の問題を回避するために、ポート接続最適化フィーチャーを使用できます。このコード生成オプションを使用すると、
生成されるコードは、実行時にこの種のチェーンの両端にあるポートを接続するように設計されます。
ポートの接続最適化フィーチャーを使用するかどうかを決定する際には、トレードオフが存在することを考慮する必要があります。最適化されたコードによってパフォーマンスは向上しますが、
アプリケーションの開始時およびポートの初期化時に一時的に使用されるメモリーも増加します。
この最適化フィーチャーを使用しても、以下のタイプのポートが含まれる接続の場合はコードは最適化されません。
- 高速ポート
- マルチキャスト・ポート
- イベント受信のみが含まれる要求インターフェースをもつポート
- 少なくとも 1 つのイベントが含まれる (または少なくとも 1 つのイベントを持つクラスから派生した) 提供インターフェースを持つポート
ポート接続最適化の使用は以下のプロパティーで制御されます。
- CPP_CG::Configuration::OptimizePortConnectors - Rational Rhapsody が最適化に必要なコード (全部または一部) を生成するかどうかを決定します。
- CPP_CG::Port::IncludeInConnectorOptimization - 使用されると、最適化に含まれるポートを決定します。
ポート接続最適化コードの生成の制御
ポート接続最適化コードは以下のものから構成されます。
- フィーチャーを使用可能にするためのインフラストラクチャー・コード
- 実際にフィーチャーを使用可能にするための OM_OPTIMIZE_PORT_CONNECTORS と呼ばれるマクロの呼び出し。このマクロは、各ポートの宛先を計算して設定する最適化アルゴリズムを呼び出します。
OptimizePortConnectors プロパティーは、このコードの生成を制御し、以下の可能な値を提供します。
ActivateInComponent 値は、実行可能なコンポーネントの場合に適切です。ライブラリーの場合、ライブラリーを使用するコンポーネントがポート・コネクター最適化の使用の有無を知る必要がない状態で使用するのが適切です。
コンポーネント間接続の最適化が必要な状態では、ActivateExternally 値を使用する必要があります。
ポート接続も手動で初期化されるような場合にもこれは適切です。
注: コンポーネントのポート間にリンクがない場合は、
ActivateInComponent プロパティー値を選択しても、生成されるコードは、ActivateExternally プロパティーを使用した場合に生成されるコードと同じになります。
つまり、要求されたインフラストラクチャー・コードは生成されるが、生成されるコードには、OM_OPTIMIZE_PORT_CONNECTORS マクロの呼び出しが組み込まれないということです。
この場合、ポートの初期化時に使用された追加メモリーは、マクロの呼び出しを独自に組み込んだ場合にのみ解放されます。
最適化されるポート接続の制御
最適化を使用するように OptimizePortConnectors プロパティーの値を設定した場合、
Boolean プロパティー CPP_CG::Port::IncludeInConnectorOptimization の値を設定して、最適化されるポート接続を制御できます。
一連のポートにこのプロパティーの値が False に設定されたポートが含まれる場合、そのポートは最適化に含まれませんが、連鎖内のそれ以外のポート接続に対しては最適化が使用されます。
ポート接続最適化コードのカスタマイズ
ポート接続最適化コード (使用されるマクロの名前や含まれるヘッダー・ファイルなど) をカスタマイズするには、以下のプロパティーを使用できます。
- CPP_CG::Framework::PortConnectorsOptimizationBaseClassPattern
- CPP_CG::Framework::PortConnectorsOptimizationImpIncludeFiles
- CPP_CG::Framework::PortConnectorsOptimizationOptimizationPattern
- CPP_CG::Framework::PortConnectorsOptimizationRegistrationPattern
- CPP_CG::Framework::PortConnectorsOptimizationSpecIncludeFiles