UWP アプリでのエネルギー使用の分析Analyze energy use in UWP apps

Visual Studio の エネルギー消費 プロファイラーは、常時または一時的に内蔵バッテリで動作する低電力のタブレット デバイス上で、UWP アプリによる電力とエネルギーの消費量を分析するのに役立ちます。The Visual Studio Energy Consumption profiler helps you analyze the power and energy consumption of UWP apps on low-power tablet devices that run all or part of the time on their own batteries. バッテリ電源デバイスでは、エネルギー消費量が多すぎるアプリはユーザーに嫌われ、最終的にアンインストールされる場合もあります。On a battery-powered device, an app that uses too much energy can cause so much customer dissatisfaction that, eventually, customers might even uninstall it. エネルギー使用を最適化することで、ユーザーがそのアプリを選択する可能性が高まり、使用頻度も向上します。Optimizing energy use can increase your app's adoption and use by customers.

エネルギー消費量プロファイラーの概要、しくみ、および測定対象What the Energy Consumption profiler is, how it works, and what it measures

エネルギー消費プロファイラーは、プロファイル セッション中のデバイスのディスプレイ、CPU、およびネットワーク接続のアクティビティをキャプチャします。The Energy Consumption profiler captures the activities of the display, CPU, and network connections of a device during a profiling session. 次に、そのアクティビティに使用される電力と、プロファイル セッションのエネルギーの総量の見積もりを生成します。It then generates estimates of the power used for those activities and the total amount of energy for the profiling session.

注意

エネルギー消費プロファイラーでの電力とエネルギーの使用量の見積もりには、アプリケーションが実行される低電力のタブレット デバイスを表す、標準参照デバイス ハードウェアのソフトウェア モデルが使用されます。The energy profiler estimates power and energy use by using a software model of standard reference device hardware that is representative of the low powered tablet devices your application might run on. 最適な見積もりを提供するために、低電力のタブレット デバイスでプロファイル データを収集することをお勧めします。To provide the best estimates, we recommend that you collect the profile data on a low powered tablet device.

このモデルを使用すると、さまざまな低電力デバイスにおける適切な見積もりを生成できますが、プロファイルの対象となるデバイスの実際の値とはほとんどの場合、異なります。Although the model provides good estimates for a variety of low-powered devices, the actual values of the device you profile will likely be different. 見積もりの値は、使用される他のリソースと比べて比較的負荷の大きい、ディスプレイ、CPU、およびネットワーク接続のアクティビティを見つけて、最適化の候補にするために使用します。Use the values to find display, CPU, and network activities that are costly relative to other resource uses and so might be good candidates for optimization.

エネルギー消費量プロファイラーでは、 電力エネルギーを次のように定義しています。The Energy Consumption profiler uses these definitions of power and energy:

  • 電力 は、一定の時間内に行われる仕事のために使用される力の割合を測定します。Power measures the rate that force is used to perform work that is done in a period of time. 電気の分野では、電力の標準単位は ワットです。ワットは、1 アンペアの電流が 1 ボルトの電位差で流れるときに行われる仕事の割合として定義されています。In electrical science, the standard unit of power is a watt, which is defined as the rate at which work is done when one ampere of current flows through an electrical potential difference of one volt. [消費電力] グラフでは、単位はワットの 1,000 分の 1 であるミリワット (mW) で表示されます。In the Power Usage graph, the units are displayed as milliwatts mW which are one thousandth of a watt.

    電力は割合であるため、方向 (一定時間内で仕事が増加または減少) と速度 (仕事が増加または減少する量) があることに注意してください。Note that because power is a rate, it has a direction (the work can increase or decrease in a period of time) and a speed (the amount that the work increases or decreases).

  • エネルギー は、バッテリの電力容量のような能力または潜在力として、または一定の時間内に消費された総電力量として、電力の総量を表します。Energy measures the total amount of power, either as a capacity or potential, as in the power capacity of a battery, or as the total amounted of power expended over a period of time. エネルギーの単位はワット時です。これは、1 ワットの電力を 1 時間にわたって常時加えた場合の電力量です。The unit of energy is a watt-hour, the amount of power of one watt constantly applied for one hour. [Energy Summary](エネルギー使用の概要)では、単位はミリワット時間 (mW-h)で表示されます。In the Energy Summary, the units are displayed as milliwatt-hours mW-h.

    エネルギー キャパシティ、使用電力、総使用エネルギーEnergy capacity, power used, total energy used

    たとえば、タブレットの完全に充電されたバッテリには、一定量のエネルギーが蓄えられています。For example, a fully charged battery in a tablet has a certain amount of stored energy. エネルギーは、ネットワーク経由での通信、値の計算、グラフィックスの表示などのタスクを実行するために使用され、バッテリの電力が消費される速度もさまざまです。As the energy is used to perform tasks such as communicating over a network, calculating values, or displaying graphics, the power of the battery dissipates at different rates. 一定の期間内に消費された総電力も、エネルギーで測定されます。For any period of time, the total of the power consumed is also measured by energy.

ユーザー マークによるシナリオの識別Identify scenarios with user marks

また、タイムライン ルーラーの領域を識別できるようにプロファイル データに ユーザー マーク を追加できます。You can add user marks to your profiling data to help identify areas in the timeline ruler.

タイムラインでのユーザー マークUser marks in the timeline

マークは、タイムライン上でメソッドが実行された時点に、オレンジ色の三角形として表示されます。The mark appears as an orange triangle in the timeline at the time the method executed. マークの上にマウス ポインターを置くと、メッセージと時刻がツールヒントとして表示されます。The message and the time are displayed as a tooltip when you hover over the mark. 複数のユーザー マークが近接している場合、マークはマージされてツールヒントのデータはまとめられます。If two or more user marks are close together, the marks are merged and the tooltip data is combined. タイムラインの表示を拡大すると、マークを分離できます。You can zoom in on the timeline to separate the marks.

C#、Visual Basic、C++ コードに対するマークの追加Add marks to C#, Visual Basic, C++ code

C#、Visual Basic、C++ コードにユーザー マークを追加するには、まず Windows.Foundation.Diagnostics LoggingChannel オブジェクトを作成します。To add a user mark to C#, Visual Basic, C++ code, first create a Windows.Foundation.Diagnostics LoggingChannel object. 次に、マークするコードの位置に LoggingChannel.LogMessage メソッドの呼び出しを挿入します。Then insert calls to LoggingChannel.LogMessage methods at the points in your code that you want to mark. 呼び出しでは LoggingLevel.Information を使用します。Use LoggingLevel.Information in the calls.

メソッドが実行されると、ユーザー マークがメッセージと共にプロファイル データに追加されます。When the method executes, a user mark is added to the profiling data along with a message.

注意

例については、Windows SDK サンプル LoggingSession Sample を参照してください。See the Windows SDK Sample LoggingSession Sample for examples.

JavaScript コードに対するマークの追加Add marks to JavaScript code

ユーザー マークを追加するには、コード内のマークする位置に次のコードを追加します。To add user marks add the following code at the points in your code that you want to mark:

if (performance && performance.mark) {  
    performance.mark(markDescription);  
}  

markDescription は、ユーザー マークのツールヒントに表示されるメッセージを含む文字列です。markDescription is a string that contains the message to display in the user mark tooltip.

プロファイリング用の環境の構成Configure your environment for profiling

正確な見積もりを取得するために、バッテリが電源になっている低電力デバイス上でのアプリのエネルギー使用をプロファイリングします。To obtain the good estimates, you'll want to profile the energy use of the app on a low-powered device that is being powered by its batteries. Visual Studio は、これらのほとんどのデバイス上で動作しないため、Visual Studio Remote Tools を使用して、Visual Studio コンピューターをデバイスに接続する必要があります。Because Visual Studio does not run on most of these devices, you'll need to connect your Visual Studio computer to the device using the Visual Studio remote tools. リモート デバイスに接続するには、Visual Studio プロジェクトとリモート デバイスの両方を構成する必要があります。To connect to a remote device, you need to configure both the Visual Studio project and the remote device. 詳細については、「Run UWP apps on a remote machine」(リモート コンピューターで UWP アプリを実行する) をご覧ください。See Run UWP apps on a remote machine for more information.

ヒント

  • UWP シミュレーターまたは Visual Studio コンピューターでエネルギー プロファイリングを実行することはお勧めできません。We don't recommend energy profiling on the UWP simulator or on the Visual Studio computer. 実際のデバイスでプロファイリングを実行する方が、はるかに現実的なデータを取得できます。Profiling on the actual device provides far more realistic data.
    • プロファイリングは、ターゲット デバイスがバッテリ駆動されている間に行います。Profile on the target device while it is powered by its batteries.
    • 同じリソース (ネットワーク、CPU、またはディスプレイ) を使用する可能性がある他のアプリを閉じます。Close other apps that might use the same resources (network, CPU, or display).

アプリのエネルギー プロファイル データの収集Collect energy profile data for your app

  1. [デバッグ] メニューの [デバッグなしで診断を開始] をクリックします。On the Debug menu, choose Start Diagnostics Without Debugging.

    [診断ハブ] でエネルギー消費を選択Choose Energy Consumption in the diagnostics hub

  2. [エネルギー消費] チェック ボックスをオンにし、 [開始]をクリックします。Choose Energy Consumption and then choose Start.

    注意

    エネルギー消費 プロファイラーを開始すると、VsEtwCollector.exe を実行するアクセス許可を要求する [ユーザー アカウント制御] ウィンドウが表示される場合があります。When you start the Energy Consumption profiler, you might see a User Account Control window requesting your permission to run VsEtwCollector.exe. [はい]をクリックします。Choose Yes.

  3. アプリケーションを実行して、データを収集します。Exercise your app to collect data.

  4. プロファイリングを停止するには、Visual Studio に戻り (Alt + Tab)、診断ハブのページの [コレクションの停止] をクリックします。To stop profiling, switch back to Visual Studio (Alt + Tab) and choose Stop collection on the Diagnostic hub page.

    データ収集の停止Stop collecting data

    Visual Studio が、収集したデータを分析し、結果を表示します。Visual Studio analyzes the collected data and displays the results.

インストール済みアプリのエネルギー プロファイル データの収集Collect energy profile data for an installed app

エネルギー消費プロファイラーは、Visual Studio ソリューションから開始された Window 8.1 アプリまたは Windows ストアからインストールされた Window 8.1 アプリに対してのみ実行できます。The Energy Consumption tool can only be run on Window Store 8.1 apps that are launched from a Visual Studio solution or are installed from the Windows store. ソリューションを Visual Studio で開いている場合、既定のターゲットは [スタートアップ プロジェクト]です。When a solution is open in Visual Studio, the default target is the Startup Project. インストール済みアプリを対象とするには、以下の手順に従います。To target an installed app:

  1. [ターゲットの変更] をクリックし、 [インストール済みのアプリ]をクリックします。Choose Change Target and then choose Installed App.

  2. [インストール済みアプリ パッケージの選択] の一覧で、ターゲットをクリックします。From the Select Installed App Package list, choose the target.

  3. 診断ハブのページで [エネルギー消費] をクリックします。Choose Energy Consumption on the diagnostics hub page.

  4. [開始] をクリックして、プロファイリングを開始します。Choose Start to begin profiling.

    プロファイリングを停止するには、Visual Studio に戻り (Alt + Tab)、診断ハブのページの [コレクションの停止] をクリックします。To stop profiling, switch back to Visual Studio (Alt + Tab) and choose Stop collection on the Diagnostic hub page.

エネルギー プロファイル データの分析Analyze energy profile data

エネルギー プロファイル データは、Visual Studio のドキュメント ウィンドウに次のように表示されます。The energy profile data is displayed in Visual Studio document window:

エネルギー プロファイラー レポート ページEnergy profiler report page

手順 1Step 1 レポート ファイルの名前は、ReportYYYYMMDD-HHMM.diagsession という形式になります。The report file is named ReportYYYYMMDD-HHMM.diagsession. レポートを保存する場合は、名前を変更できます。You can change the name if you decide to save the report.
手順 2Step 2 タイムラインは、プロファイル セッションの長さ、アプリケーションのアクティブ化ライフサイクル イベント、ユーザー マークを示します。The timeline shows the length of the profiling session, app lifecycle activation events, and user marks.
手順 3Step 3 青いバーをドラッグしてタイムラインの領域を選択することにより、レポートをタイムラインの一部だけに制限できます。You can restrict the report to a part of the timeline by dragging the blue bars to select a region of the timeline.
手順 4Step 4 [消費電力] グラフは、プロファイル セッション中にデバイス リソースによって引き起こされる電源出力の変化を系列別に表示する折れ線グラフです。The Power Usage graph is a multi-line chart that displays the change in the power output that is caused by a device resource during a profiling session. エネルギー消費量プロファイラーは、CPU、ネットワーク アクティビティ、および画面表示によって使用された電力を追跡します。The Energy Consumption profiler tracks the power used by the CPU, network activity, and the screen display.
手順 5Step 5 [リソース (オン/オフ)] グラフは、ネットワークのエネルギー コストの詳細を示します。The Resources (On/Off) graph provides details of network energy costs. [ネットワーク] バーは、ネットワーク接続が開かれていた時間を表します。The Network bar represents the time that the network connection was open. [データ転送] 子バーは、アプリがネットワーク経由でデータを受信または送信していた時間です。The Data Transfer child bar is the time that the app was receiving or sending data over the network.
手順 6Step 6 [エネルギー使用の概要] は、選択されたタイムラインで CPU、ネットワーク アクティビティ、および画面表示によって使用された総エネルギーの割合を示します。The Energy Usage Summary shows the proportional amount of the total energy that was used in the selected timeline by the CPU, network activity, and the screen display.

エネルギー プロファイル データを分析するにはTo analyze the energy profile data

リソースの電力がピークになっている領域を探します。Find an area where resource power peaked. ピーク領域をアプリの機能に関連付けます。Relate the peak area to the functionality of your app. 次に、タイムラインのコントロール バーを使用して、その領域を拡大表示します。Then use the timeline control bars on the timeline to zoom in on the area. ネットワーク使用量に注目している場合は、 [リソース (オン/オフ)] グラフの [ネットワーク] ノードを展開して、ネットワーク接続が開かれていた時間とアプリがネットワーク経由でデータを受信または転送していた時間を比較します。If you are focused on network usage, expand the Network node in the Resources (On/Off) graph to compare the time that the network connection was open to the time that the app was receiving or transferring data over the connection. 不必要にネットワークが開かれている時間を短縮することは、非常に有効な最適化です。Reducing the time that the network is unnecessarily opened is a very effective optimization.

エネルギー使用の最適化Optimize energy use

ネットワーク接続では、データ送信の他にも、接続の初期化、維持、およびシャットダウン時にエネルギー コストが発生します。In addition to transmitting data, network connections incur energy costs for initializing, maintaining, and shutting down the connection. 一部のネットワークでは、データの送受信後も一定期間接続を維持することで、1 つの接続でさらにデータを転送できるようになっています。Some networks maintain the connection for a period of time after data is sent or received to allow more data over to be transmitted over a single connection. [リソース (オン/オフ)] ウィンドウを使用して、アプリが接続とどのように連係しているかを調べることができます。You can use the Resources (On/Off) pane to examine the way your app interacts with the connection.

[リソース (オン/オフ)] ウィンドウResources (On/Off) pane

[ネットワーク] バーと [データ転送] バーが、一連の小さいデータ パケットを断続的に送信するために接続が長期間開かれていることを示している場合は、データをバッチ処理して 1 回の伝送で送信することで、ネットワークが開かれている時間を短縮し、エネルギー コストを削減することができます。If the Network and Data Transfer bars show that the connection is open for long periods to intermittently transmit a series of small data packets, you can batch the data to send it in one transmission, reduce the time that the network is open, and thus save energy costs.

エネルギー消費の概要ペインEnergy Consumption Summary pane

ディスプレイのエネルギー コストは、あまり制御できません。You have less control over the energy costs of the display. ほとんどの画面では、暗い色より明るい色を表示する際に多くのエネルギーが必要になるため、暗い背景を使用することはエネルギー コストを削減する方法の 1 つです。Most screens require more energy to display light colors than darker colors, so using a dark background is one way to reduce costs.

その他のリソースOther resources

  • Windows デベロッパー センターの C#/VB/C++ と XAML および JavaScript と HTML の「 接続状態とコストの管理 」セクションでは、ネットワーク接続情報を提供する Windows API について説明しています。この情報を使って、アプリはネットワーク トラフィックのコストを最小限にすることができます。The Connection state and cost management sections for C#/VB/C++ and XAML and JavaScript and HTML in the Windows Dev Center describe the Windows APIs that provide network connectivity information that your app can use to minimize the cost of network traffic.

    UWP アプリ用の Visual Studio シミュレーターでは、ネットワーク情報 API のデータ接続プロパティをシミュレートすることができます。The Visual Studio simulator for UWP apps enables you to simulate data connection properties of the network information APIs. シミュレーターで UWP アプリを実行する」をご覧くださいSee Run UWP apps in the simulator

  • JavaScript 関数タイミング および CPU 使用率 ツールは、非効率的な関数のために生じる CPU 負荷の削減に役立ちます。The JavaScript Function Timing and the CPU Usage tools can help you reduce the CPU load when it is caused by inefficient functions. CPU 使用率の分析」をご覧ください。See Analyze CPU Usage.

関連項目See Also

Visual Studio のプロファイルProfiling in Visual Studio
プロファイリング機能ツアーProfiling Feature Tour