酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Windows Phoneでアプリケーションのパフォーマンス分析をおこなう

Windows Phone SDK 7.1より「パフォーマンス分析」機能が使えるようになりました。アプリケーションを実行しながらどのタイミングで画面の再描画が走ったのか、メモリをどれだけ消費したのか等を分析して調べられるため、分析結果を元に修正していけばパフォーマンスを向上させることができます。

パフォーマンス分析をおこなう

Visual Studioのツールバーの[デバッグ]にWindows Phoneパフォーマンス分析の開始という項目があります。

f:id:ch3cooh393:20150415142553p:plain

アプリケーションの描画とメソッドの呼び出し回数(メソッドの呼び出し回数が多ければ多いほどパフォーマンスが悪い)の分析をおこなうには[実行]にチェックをいれます。

パフォーマンスを落としている原因がメモリだと分かっている場合は、[メモリ]にチェックをいれます。通常はアプリケーション前提の分析結果からボトルネックを洗い出す作業をおこないますので [実行]のまま[アプリケーションの起動]をクリックします。

f:id:ch3cooh393:20150415142616p:plain

パフォーマンス分析をおこなう時点である程度、パフォーマンスの悪い操作について検討がついているかと思います。プロファイル中に改善したい操作をおこないます。

f:id:ch3cooh393:20150415142637p:plain

改善したいアプリケーションの操作を一通りおこなった後、[プロファイルの停止]をクリックしてプロファイルを停止します。停止後、収集したデータの解析と分析が開始されます。

f:id:ch3cooh393:20150415142654p:plain

アプリケーションのフレーム レート、CPU 使用量、メモリ使用率、ストーリーボード、イメージ読み込み、およびガベージコレクションイベントがグラフで表示されます。

f:id:ch3cooh393:20150415142714p:plain

これらの図は以下の要素を表現しています。

フレームレート

画面の再描画数を1秒間あたりのフレーム数で表しています。

アニメーションを多用しているアプリケーションやゲームの場合は、1秒間に平均30~60フレームを保つようにしなければいけません。

CPU使用率

端末のCPU使用率が分かります。白色のグラフが目立つほどCPU負荷が低く快適であることの目安となります。

  • 緑色のグラフは、UIスレッドを表します
  • 紫色のグラフは、UIではないアプリケーションスレッドを表します。
  • 灰色のグラフは、システムスレッドを表します。
  • 白色のグラフは、アイドルスレッドを表します。アイドルスレッドの割合が多いほど、応答速度は早くなることを示します。

ストーリーボード

  • ストーリーボードが発生した時点がSフラグで表示されています。通常はこのフラグはアニメーションの開始時点を表します。
  • 赤色のSフラグは、CPU負荷が高い
  • 紫色のSフラグは、CPU負荷が低い

イメージ読み込み

画像が端末上のメモリに読み込まれた時点がIフラグで表示されています。

GCイベント

ガベージコレクションが発生した時点がGフラグで表示されています。Gフラグが多ければ多いほど、無駄にメモリを使っている可能性があります。