次の方法で共有


リソース消費と UI スレッド アクティビティの分析 (XAML)

アプリケーション タイムライン プロファイラーを使用して、XAML アプリケーションでのアプリケーションの相互作用に関連するパフォーマンスの問題を見つけて修正します。 このツールは、アプリケーションのリソース消費量の詳細なビューを表示することで、XAML アプリケーションのパフォーマンスを向上するのに役立ちます。 UI フレームの準備 (レイアウトとレンダリング)、ネットワークとディスクの要求の処理、アプリケーションの起動、ページの読み込み、Windows のサイズ変更などのシナリオで、アプリケーションが費やした時間を分析できます。

アプリケーション タイムライン は、Debug>Performance Profiler コマンドで開始できるツールの 1 つです。

このツールは、以前のバージョンの Visual Studio の診断ツールセットの一部であった XAML UI の応答性 ツールに代わるツールです。

このツールは、次のプラットフォームで使用できます。

  • ユニバーサル Windows アプリ (Windows 10 以降)
  • Windows 8.1
  • Windows Presentation Foundation (.NET 4.0 以降)
  • Windows 7

手記

ApplicationTimeline データと共に、CPU 使用率データとエネルギー消費量データを収集して分析できます。 「リリース ビルドまたはデバッグ ビルドでプロファイリング ツールを実行する」を参照してください。

アプリケーション タイムライン データを収集する

ローカル コンピューター、接続されているデバイス、Visual Studio シミュレーターまたはエミュレーター、またはリモート デバイスでアプリの応答性をプロファイリングできます。 「リリース ビルドまたはデバッグ ビルドでプロファイリング ツールを実行する」を参照してください。

ヒント

可能であれば、デバイスで直接アプリを実行します。 シミュレーターまたはリモート デスクトップ接続を介して観察されるアプリケーションのパフォーマンスは、デバイス上の実際のパフォーマンスと同じではない可能性があります。 一方、Visual Studio リモート ツールを使用してデータを収集しても、パフォーマンス データには影響しません。

基本的な手順を次に示します。

  1. XAML アプリを開きます。

  2. 「デバッグ / パフォーマンス プロファイラー」をクリックします。 .diagsession ウィンドウにプロファイリング ツールの一覧が表示されます。

  3. アプリケーションタイムライン」を選択し、ウィンドウの下部にある [開始] をクリックします。

    アプリケーション タイムライン ツールが選択

    手記

    VsEtwCollector.exeを実行するアクセス許可を要求するユーザー アカウント制御ウィンドウが表示される場合があります。 [はい]をクリックします。

  4. パフォーマンス データを収集するために、アプリでのプロファイリングに関心のあるシナリオを実行します。

  5. プロファイリングを停止するには、.diagsession ウィンドウに戻り、ウィンドウの上部にある [停止] をクリックします。

    Visual Studio では、収集されたデータが分析され、結果が表示されます。

    タイムライン プロファイラー レポート

タイムライン プロファイル データの分析

プロファイル データを収集したら、次の手順を使用して分析を開始できます。

  1. [UI スレッド使用状況][ビジュアル スループット (FPS)] のグラフの情報を表示し、タイムラインのナビゲーション バーを使用して、分析する時間の範囲を選択します。

  2. UI スレッド使用率 または ビジュアル スループット (FPS) グラフの情報を使用して、タイムラインの詳細 ビューの詳細を調べて、応答性が不足している可能性がある原因を見つけます。

レポートのシナリオ、カテゴリ、イベント

アプリケーション タイムライン ツールには、XAML パフォーマンスに関連するシナリオ、カテゴリ、イベントのタイミング データが表示されます。

診断セッションのタイムライン

パフォーマンスと診断のタイムライン

ページの上部にあるルーラーには、プロファイル情報のタイムラインが表示されます。 このタイムラインは、UI スレッド使用率 グラフと ビジュアル スループット グラフの両方に適用されます。 タイムライン上のナビゲーション バーをドラッグしてタイムラインのセグメントを選択することで、レポートの範囲を絞り込むことができます。

タイムラインには、挿入したすべてのユーザー マークと、アプリのアクティブ化ライフサイクル イベントも表示されます。

UI スレッド使用率グラフ

CPU使用率のグラフ

UI スレッド使用率 (%) グラフは、コレクションスパン中にカテゴリに費やされた相対的な時間を表示する棒グラフです。

ビジュアル スループット (FPS) グラフ

ビジュアル スループット グラフ を表示する

ビジュアル スループット (FPS) ライン グラフには、アプリの UI とコンポジション スレッド上の 1 秒あたりのフレーム数 (FPS) が表示されます。

タイムラインの詳細

詳細ビューでは、ほとんどの時間をレポートの分析に費やします。 UI Framework サブシステムまたは CPU を使用したシステム コンポーネントによって分類された、アプリケーションによる CPU 使用率が表示されます。

次のイベントがサポートされています。

名前 説明
解析 XAML ファイルの解析とオブジェクトの作成にかかった時間。

[タイムラインの詳細][解析] ノードを展開すると、ルート イベントの結果として解析されたすべての XAML ファイルの依存関係チェーンが表示されます。 このヒントを使用すると、パフォーマンスに依存するシナリオで不要なファイル解析とオブジェクトの作成を特定し、最適化することができます。
レイアウト 大規模なアプリケーションでは、何千もの要素が同時に画面に表示される場合があります。 この表示により、UI のフレーム レートが低く、それに対応してアプリケーションの応答性が低下する可能性があります。 Layout イベントは、各要素をレイアウトするコスト (つまり、Arrange、Measure、ApplyTemplate、ArrangeOverride、および MeasureOverride で費やされた時間) を正確に決定します。 また、レイアウト パスに参加したビジュアル ツリーも構築されます。 この視覚化を使用して、排除する論理ツリーを決定したり、レイアウト パスを最適化するために他の遅延メカニズムを評価したりできます。
レンダリング XAML 要素の画面への描画に費やされた時間。
入出力 Microsoft Windows Internet (WinINet) APIを介してアクセスされるローカル ディスクまたはネットワーク リソースからデータを取得する時間。
アプリ コード 解析やレイアウトに関連しないアプリケーション (ユーザー) コードの実行に費やされた時間。
XAML その他 XAML ランタイム コードの実行に費やされた時間。

ヒント

プロファイリングを開始して UI スレッドで実行されるアプリ メソッドを表示するときに、アプリケーション タイムライン ツールと共に、CPU 使用率 ツールを選択します。 実行時間の長いアプリ コードをバックグラウンド スレッドに移動すると、UI の応答性が向上する可能性があります。

タイムラインの詳細のカスタマイズ

[タイムラインの詳細] ツール バーを使用して、[タイムラインの詳細] ビュー エントリの並べ替え、フィルター処理、注釈の指定を行います。

名前 説明
を基準にして並べ替える 開始時刻またはイベントの長さで並べ替えます。
フレームTIMELINE_GroupByFrames フレームごとにイベントをグループ化する最上位レベルの Frame カテゴリを追加または削除します。
タイムラインの詳細リストのフィルター をフィルター処理する 選択したカテゴリとイベントの長さでリストをフィルター処理します。
タイムラインの詳細情報をカスタマイズする イベントへの注釈を指定できます。