コード実行データの解析
SIL または PIL シミュレーションの実行後、coder.profile.ExecutionTime
クラスと coder.profile.ExecutionTimeSection
クラスのメソッドを使用して実行時間データを解析できます。
rtwdemo_sil_topmodel
を開きます。[コンフィギュレーション パラメーター] 、 [コード生成] 、 [検証] ペインで、プロファイリング オプションを指定します。
[タスク実行時間を計測する] チェック ボックスをオンにします。
[ワークスペース変数] を指定します (たとえば
myExecutionProfile
)。[保存オプション] ドロップダウン リストで
[すべてのデータ]
を選択します。
SIL シミュレーションを実行します。
ワークスペース変数 myExecutionProfile
の coder.profile.ExecutionTime
オブジェクトが生成されます。
プロファイリング データがあるコード セクションの総数を取得するには、Sections
メソッドを使用します。
>> no_of_Sections = myExecutionProfile.Sections no_of_Sections = 1×2 ExecutionTimeTaskSection array with properties: Name Number ExecutionTimeInTicks SelfTimeInTicks TurnaroundTimeInTicks TotalExecutionTimeInTicks TotalSelfTimeInTicks TotalTurnaroundTimeInTicks MaximumExecutionTimeInTicks MaximumExecutionTimeCallNum MaximumSelfTimeInTicks MaximumSelfTimeCallNum MaximumTurnaroundTimeInTicks MaximumTurnaroundTimeCallNum NumCalls ExecutionTimeInSeconds Time
coder.profile.ExecutionTimeSection
オブジェクトを取得するには、Sections
メソッドを使用します。>> FirstSectionProfile = myExecutionProfile.Sections(1) SecondSectionProfile = myExecutionProfile.Sections(2) FirstSectionProfile = ExecutionTimeTaskSection with properties: Name: 'rtwdemo_sil_topmodel_initialize' Number: 1 ExecutionTimeInTicks: 1188 SelfTimeInTicks: 1188 TurnaroundTimeInTicks: 1188 TotalExecutionTimeInTicks: 1188 TotalSelfTimeInTicks: 1188 TotalTurnaroundTimeInTicks: 1188 MaximumExecutionTimeInTicks: 1188 MaximumExecutionTimeCallNum: 1 MaximumSelfTimeInTicks: 1188 MaximumSelfTimeCallNum: 1 MaximumTurnaroundTimeInTicks: 1188 MaximumTurnaroundTimeCallNum: 1 NumCalls: 1 ExecutionTimeInSeconds: 5.4000e-07 Time: 0 SecondSectionProfile = ExecutionTimeTaskSection with properties: Name: 'rtwdemo_sil_topmodel_step [0.1 0]' Number: 2 ExecutionTimeInTicks: [1×101 uint64] SelfTimeInTicks: [1×101 uint64] TurnaroundTimeInTicks: [1×101 uint64] TotalExecutionTimeInTicks: 70316 TotalSelfTimeInTicks: 70316 TotalTurnaroundTimeInTicks: 70316 MaximumExecutionTimeInTicks: 2448 MaximumExecutionTimeCallNum: 2 MaximumSelfTimeInTicks: 2448 MaximumSelfTimeCallNum: 2 MaximumTurnaroundTimeInTicks: 2448 MaximumTurnaroundTimeCallNum: 2 NumCalls: 101 ExecutionTimeInSeconds: [1×101 double] Time: [101×1 double]
特定のコード セクションのプロファイリング情報を抽出するには、coder.profile.ExecutionTimeSection
のメソッドを使用します。たとえば、プロファイリングされたタスクの名前を取得するには Name
を使用します。
>> name_of_section = SecondSectionProfile.Name name_of_section = rtwdemo_sil_topmodel_step [0.1 0]
タイマーのキャリブレーションが未実行で、タイマーのレートがわかっている場合 (たとえば 2.2 GHz)、coder.profile.ExecutionTime
の TimerTicksPerSecond
メソッドを使用してタイマーのキャリブレーションを実行できます。
>> myExecutionProfile.TimerTicksPerSecond = 2.2e9; >> SecondSectionProfile = myExecutionProfile.Sections(2);