2024/5/9
製品
カテゴリー
タグ
345 Views
DT+ガイダンス 関数ごとの実行時間と周期時間を計測する
Contents
はじめに
こちらのページでは、「DT+Trace」というツールに慣れていない方向けに「上手に実行時間/周期時間を解析する方法」についての手ほどきをまとめています。
「実行時間や周期時間を解析したいが、どう使えばいいのか分からない」/「解析のためのテストポイントの上手な挿入方法が分からない」という課題をお持ちの方は、ぜひこちらのページを参考にしてみてください。
所要時間:30分
関数ごとの実行時間や周期時間を調べる
「DT+Trace」では「実行時間レポート/周期時間レポート」を使用することで、関数ごとの実行時間や周期時間を解析することができます。
作業フロー
実行時間とは?
関数の入り口のテストポイント(FuncIn)が実行されてから、出口のテストポイント(FuncOut)が実行されるまでの時間です。
そのため、関数ごとの実行時間を計測したい場合には、FuncInとFuncOutのある環境が必要になります。
※ 実行時間の種類について
- In-Out:関数内で別の関数を呼び出していたり、割り込み処理が入る場合の時間も含んだもの
- 占有時間:上記の時間を含まない純粋なその関数の実行時間
周期時間とは?
関数の入り口のテストポイント(FuncIn)が実行されてから、同じ関数の入り口のテストポイント(FuncIn)が実行されるまでの時間です。
そのため、関数ごとの周期時間を計測したい場合には、FuncInのある環境が必要になります。
以上を踏まえると、FuncInとFuncOutにテストポイントを挿入しておくことで、実行時間と周期時間をまとめて解析できるということになります。
次の項目より、実際の操作手順について解説していきます。
1. テストポイントの挿入
まずはテストポイントの挿入については、FuncInとFuncOut部分のみを有効にします。
- 「テスト計画メニュー」の「テストポイントの新規挿入」からテスト対象としたいソースファイルのチェックボックスを有効にして、テストポイントを新規挿入します。
- その後フォルダビュ―上の各ソースファイル名のチェックボックスから、FuncIn/FuncOutのみを有効にします。
- そして「テストポイントの有効無効状態の更新」を実施して、テストポイントの状態を反映します。
Q:なぜ「FuncInとFuncOut」のみ有効にするのか?
「DT+Trace」はテストポイントを埋め込んで計測するという特性上、闇雲にすべてのステップにテストポイントを挿入してしまうとオーバヘッド(テストポイント出力時にかかる負荷)が大きくなってしまい、実機がうまく動かない/動作が重くなる等の影響が出る場合があります。
そのため、あらかじめ確認したい部分を決めておき、挿入するテストポイントの総量を調整しながら運用していくのがおすすめです。
今回のように関数ごとの実行時間や周期時間を計測する場合には、FuncInとFuncOutのテストポイントのみを有効にするという方法でオーバヘッドの影響を最小限にすることが可能です。
Q:「テストポイントを無効」にするとどうなるのか?
テストポイントを無効にして、テスト実行を行うと該当のテストポイントはグレーアウトで表示されるようになります。
無効になることで、「DT_○○○○.h」で始まるヘッダファイル内の処理で「空マクロ」として処理されるようなイメージです。
2. 実機を動作させて、実行時間を計測する
テストポイントの挿入が完了したら、ビルドして実機を動作させて、データの取得を行います。
レポート解析をすることで、「実行時間/周期時間レポート」が表示され、グラフやヒストグラムで各種実行時間やバラつきを確認可能になります。
なお、「実行時間/周期時間レポート」の詳しい操作方法に関しては、以下のリンク先のチュートリアルページをご確認ください。
各関数の遷移状況を確認する
また、FuncIn/FuncOutにテストポイントを挿入することで、関数ごとの遷移状況をグラフで確認する事が可能になります。
「関数遷移スコープ」を起動して、各関数ごとの遷移状況についてご確認ください。
なお、「関数遷移スコープ」に関しての詳しい操作方法に関しては、以下のリンク先のチュートリアルページをご確認ください。
その他
もしも、「FuncIn/FuncOutにテストポイントを挿入しても、そもそも通過しない場合」や「FuncIn/FuncOutとは別の区間の実行時間を計測したい」というような場合には「任意の二点間」を設定して、関数の実行時間を計測することも可能です。
→ 実行時間測定区間を自分で設定したい
また、ステップごとの周期時間についても任意の区間での計測が可能です。
→ 周期時間測定箇所を自分で設定したい