Main Content

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

コード実行データの解析

SIL または PIL シミュレーションの実行後、coder.profile.ExecutionTime クラスと coder.profile.ExecutionTimeSection クラスのメソッドを使用して実行時間データを解析できます。

  1. rtwdemo_sil_topmodel を開きます。

  2. [コンフィギュレーション パラメーター][コード生成][検証] ペインで、プロファイリング オプションを指定します。

    • [タスク実行時間を計測する] チェック ボックスをオンにします。

    • [ワークスペース変数] を指定します (たとえば myExecutionProfile)。

    • [保存オプション] ドロップダウン リストで [すべてのデータ] を選択します。

  3. SIL シミュレーションを実行します。

ワークスペース変数 myExecutionProfilecoder.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.ExecutionTimeTimerTicksPerSecond メソッドを使用してタイマーのキャリブレーションを実行できます。

>> myExecutionProfile.TimerTicksPerSecond = 2.2e9;
>> SecondSectionProfile = myExecutionProfile.Sections(2);

関連するトピック