アプリケーションのパフォーマンスと基本要素の向上により、洗練と職人技の感覚が実現される一方で、顧客の時間、コスト、バッテリー切れ、開発作業が削減されます。 アプリの消費電力が少なくなり、バッテリー寿命が向上し、炭素排出量が削減されます。 アプリが、より安価なハードウェアでよりスムーズに実行されます。 顧客の生産性が向上します。
このページでは、Windows アプリケーションのパフォーマンスを測定、理解、調整するためのテクノロジと開発ツールの概要を示します。 UWP アプリを作成する場合は、UWP のパフォーマンスに関するドキュメントもご覧ください。
アプリケーション パフォーマンスの定義と重要性
パフォーマンスは、アプリケーションがシステムのリソースを使用して、設計した処理をどの程度効果的に行うかを示す尺度です。 次のような、プログラムが基になるデバイスとやり取りする方法のさまざまな側面について説明します。
- CPU 使用率
- メモリ消費
- 電力消費量
- ネットワークとストレージの使用率
- アニメーションのパフォーマンス
これらのすべてのプロパティには、コストの要素が関連付けられています。たとえば、アプリケーションが使用する CPU の量などです。 ユーザーの帯域幅のどのくらいが消費されますか? アプリケーションのこの特定のページの読み込み速度はどのくらいですか?
ユーザーは、使用するソフトウェアの基本的なプロパティとしてパフォーマンスを期待します。 アプリケーションの応答性を高め、システムのリソースを効率的に使用することを望んでいます。 パフォーマンスが低いアプリケーションはフラストレーションを引き起こし、ユーザー エンゲージメントが低下する可能性があります。 そのため、顧客に最高のエクスペリエンスを提供するには、パフォーマンスを開発ワークフローの通常の部分にすることが重要です。
アプリケーションのパフォーマンスを測定する必要がある場合
アプリケーションのパフォーマンスは、開発プロセスの多くの段階に及ぶ可能性があります。 これは、データ構造の選択から、アプリケーションの構築に選択したテクノロジまで、あらゆることに影響します。 アプリケーションの開発時にパフォーマンスを考慮し、アプリケーションの更新と保守の一環として定期的なパフォーマンス テストを計画します。
パフォーマンス測定にアプローチする方法
アプリケーションのパフォーマンステストに取り組む方法に関する推奨事項を次に示します。
- アプリケーションに関する知識を活用します。 ユーザーにとって最も一般的なシナリオを理解することで、適切な最適化に時間を費やすことができます。 ユーザーがアプリケーションとやり取りする方法に関するデータを利用できる場合は、これを確認するのに最適なタイミングです。
- ユーザーはほとんどの時間をどこに費やしていますか?
- 顧客がソフトウェアを使用して行う最も重要なことは何ですか?
- アプリケーションのハードウェア要件は何ですか?
- 最も重要なユーザー シナリオのパフォーマンス目標を設定します。
- 最適化しようとしている内容について正確に説明します。 CPU ですか? バッテリー。 ネットワーク スループット
- 測定に使用するツールを選択します。
- テスト時に科学的な考え方を適用します。 制御された環境でベンチマークを作成します。 次に、変更を行い、変更がアプリケーションの動作にどのように影響したかを確認するために再測定します。
- テスト環境に回帰テストを追加します。 これにより、パフォーマンス メトリックが時間の経過と同時に低下しないようにします。
相互に結び付くメトリック
通常は分析中にパフォーマンスの 1 つの領域に焦点を当てますが、多くの場合、領域が絡み合っている点に注意してください。 一方の改善は、他の領域の改善に連鎖する可能性があります。
たとえば、電力消費量の修正は、多くの場合、同期の問題です。 メモリ使用量を減らすと、CPU の使用に費やす時間が短縮される可能性があります。 また、1 つの領域に追加のリソースが費やされ、別の領域でより影響を与える改善が生まれる場合もあります。たとえば、メモリ消費量を増やすと、キャッシュによってネットワークまたはストレージの使用率が低下する可能性があります。
変更を行う決定は、顧客にとって最も重要なものによって異なります。
アプリケーションのパフォーマンスを測定するために使用できるツール
Windows アプリケーションのパフォーマンスを測定するために使用できるさまざまなオプションがあります。
どのツールを選択したらいいか分からない場合は、Visual Studio パフォーマンス プロファイラーと Windows Performance Toolkit の比較」を参照してください。
Visual Studio パフォーマンス プロフィラー
Visual Studio には、アプリケーションを監視し、ソース内の分析情報を得るのに役立つツールが用意されています。 下記のツールにアクセスして、これらのツールを使用して開発環境から直接コードを最適化する方法について学びます。
Windows Performance Toolkit
Windows パフォーマンス レコーダーと Windows パフォーマンス アナライザーでは、Windows イベント トレーシング (ETW) を使用して、アプリケーションとシステム全体を詳細に監視、分析できます。 作業を開始する方法については、以下のリンクを参照してください。
PerfView
PerfView は、.NET パフォーマンスの問題の調査用に .NET チームによって作成されたオープン ソースの監視および分析ツールです。 .NET シンボルとマネージド メモリをデコードするその機能により、マネージド アプリケーションに最適な選択肢です。
PerfView チュートリアル シリーズ
SizeBench
SizeBench は、コンパイル済みのネイティブ コード バイナリ (DLL、EXE、その他の PE ファイル) のサイズを調査、削減するのに役立つユーティリティです。
その他のリソース
ブログとニュース
舞台裏に迫った、パフォーマンスの専門家によって書かれた開発者ブログをお読みください。最適なバージョンのアプリの構築に役立ちます。
コミュニティとサポート
- compile-debug-test ループのパフォーマンスに問題がありますか? GitHub の Windows Dev Performance リポジトリで報告してください。
パフォーマンスと持続可能性
パフォーマンス エンジニアリングは、持続可能なソフトウェアの動きと直接交差します。 ほとんどの電力網は、発電するために化石燃料を燃やします。 アプリケーションが PC 上で実行されると電力を消費します。これは 1 人のユーザーに対しては小さいかもしれませんが、ユーザー ベースの拡大に合わせて増大します。
パフォーマンス エンジニアリングと持続可能性がどのように交差するかについて知る必要がありますか? グリーン ソフトウェア エンジニアリングの原則と Microsoft の持続可能なソフトウェアに関するブログをご覧ください。
コンテンツのロード マップ
パフォーマンスは、適切なガイダンスがないと、開発プロセスにおける悩みの種になる可能性があります。 アプリの開発者が適切なドキュメントを入手できるようにすることが、より高速なアプリを作成する鍵になります。 以下のロード マップでは、このドキュメント セットに追加される以降のページについて、公開順に詳しく説明します。 良かった点や不足しているものがある場合は、このページ下部のフィードバック リンクを介して GitHub でお知らせください。 私たちの目標は、ニーズを満たすアプリのパフォーマンスを実現するための包括的かつ教育的なドキュメント セットをキュレートすることです。ご意見をぜひお寄せください。 Windows アプリケーションのパフォーマンスに関して取り上げてほしいトピックがある場合は、このページの以下のフィードバックを利用して、ご提案ください。
| トピック | 説明 |
|---|---|
| パフォーマンス領域の概要 | CPU、メモリ、GPU などのコンテキストでのパフォーマンスの意味について説明します。 |
| 何を測定するかを特定する | ワークロード、環境、その他の要因に応じて、パフォーマンスの特定の領域が他の領域よりも重視される場合があります。 このドキュメントにより、何をいつ測定するかを確認してください。 |
| パフォーマンス テスト サイクル | パフォーマンス テスト ライフサイクルを順に説明します。これには、テスト環境の設定、結果の分析、製品の改善が含まれます。 |
| さまざまなパフォーマンス ツールについて | このドキュメントでは、その他のパフォーマンス ツールを紹介し、それらを使用するためのユース ケースとベスト プラクティスについて説明します |
| ケース スタディ | 一連のエンドツーエンドシナリオと、それらがパフォーマンステストサイクルを通じてたどるプロセス |
Windows developer