Everything

基本的な実行性能解析方法

それでは,実行性能の解析を実際に体験するため,解析グラフの「実行時間の割合」を使用してみます。以下の手順で解析グラフ・パネルを開きます。

 

[解析グラフ・パネル]ボタンをクリックして,解析グラフを開き

[実行時間の割合]タブをクリックしてください。

解析グラフが表示されます。この段階ではトレース・データを取得していないため「実行時間情報がありません」と出力パネルに表示されます。

 

実行時間の割合を表示する解析グラフは,トレース・データ(CPUの実行履歴)を元に描画されます。

以下に示す手順でトレース機能を使用する設定にします。

なお,デバイスによっては既に使用する設定になっています。

 

メイン・ウインドウの[トレース・アイコン]をクリックしてください。

[トレース・アイコン]が“”に変わり,

トレース機能が使用できます。

 

以下に示す手順で,ブレーク・ポイントを設定して,プログラムを実行してみましょう。

 

下図のようにr_main.c内にブレーク・ポイントを設定して,

メニューの「リセット&実行ボタン」を押してください。

解析グラフに実行割合を示すグラフが表示されます。

 

表示された解析グラフを見てください。サンプル・プログラムの想定としては,func1aの割合がfunc2aよりも割合が大きくなります。しかし解析グラフでは,func2aの割合が,func1aの割合よりも大きくなっています。

これは,下図に示すとおり,解析対象とする実行時間よりも,トレース取得期間が少ないことが原因となります。つまりトレース容量が少ないためです。

なお,RXでは,最低トレース容量が64Kフレームのため,既に十分なトレース取得期間が確保できています。

 

解析対象とする実行時間に対して,トレースの取得期間が十分かどうかを判断する場合は,次に示す方法が有効です。

デバッグ・ツールのプロパティで「トレース・メモリを使い切った後の動作」の設定を「停止する」に設定してください。

 

下図のようにデバッグ・ツールのプロパティで「トレース・メモリを使い切った後の動作」を「停止する」に設定してください。

トレース・メモリを使い切った後,プログラムの実行が

停止するように設定されます。

 

このようにすることで,以下に示すように,プログラム実行時間の全てが解析範囲に含まれることになります。

 

それでは,一旦CPUのリセットを行ってプログラムを再度実行します。

 

メニューの「リセット&実行ボタン」を押してください。

トレース・メモリを使い切ったことによって,プログラムの実行が停止します。しかし,ブレーク・ポイントまでプログラムの実行が到達していないことが分かります。

 

ブレーク・ポイントまで到達していないため,解析対象としたい範囲に対して,トレース取得期間が足りていないことが分かります。

 

それでは,トレース・メモリ・サイズを大きくしていみます。デバッグ・ツールのプロパティで「トレース・メモリ・サイズ」の設定をデフォルトの「4K」から「36K」に設定してください。CPUリセットを行ってプログラムを再度実行します。

 

下図のようにデバッグ・ツールのプロパティで「トレース・メモリ・サイズ」を「36K」に設定してプログラムを実行してください。

プログラム実行がブレーク・ポイントで停止し,

解析グラフに結果が表示されます。

 

今度はブレーク・ポイントで停止しました。解析したい範囲のプログラム実行時間に対して,トレース取得期間が十分だったためです。

 

解析グラフを見てください。今度はfunc1aの実行割合がfunc2aの約2倍となり,正しい結果が得られています。正確に2倍にならないのは,割り込みが介入しているためです。

 

これまでに説明したとおり,解析したい範囲に対して,解析データ(デバッグ・ツールのトレース・メモリ)が適切か確認することが重要です。

 

しかし,実際のプログラムは,条件文が多用されるため,1回と100回で実行したとき,関数の実行割合が違うことがあります。次ページから統計的な解析を行う場合の手法について説明します。