Version: 2020.2
Profiler overview
Audio プロファイラーモジュール

The Profiler window

Unity Profiler (プロファイラー) にアクセスするには、Window > Analysis > Profiler に移動するか、キーボードショートカット Ctrl+7 (macOS では Command+7 ) を使用します。

プロファイラーは、アプリケーションパフォーマンスの複数の領域を記録し、その情報を表示します。この情報を使用して、アプリケーションで何を最適化する必要があるかについて十分な情報に基づいた決定を行い、最適化によって期待する結果が得られることを確認できます。

デフォルトでは、プロファイラーはゲームの最後の 300 フレームを記録して保存し、すべてのフレームに関する詳細情報を表示します。Preferences ウィンドウ (File > Preferences) で記録するフレーム数を最大 2,000 フレームまで増やすことができます。注意: この設定でフレーム数を大きな数にすると、プロファイラーのオーバーヘッドとメモリ使用量がパフォーマンスにより大きな影響を与える場合があります。

スクリプトコードと、そのコードをスローダウンさせる可能性のある特定のアセットとリソースをアプリケーションがどのように使用するかを調べることができます。また、さまざまなデバイスでアプリケーションのパフォーマンスを比較することもできます。プロファイラーにはいくつかの異なる プロファイラーモジュール があり、プロファイリングセッションに追加して、レンダリング、メモリ、 オーディオなどの領域に関する詳細情報を取得できます。

このページでは、以下のトピックについて説明します。

Profiler ウィンドウのレイアウト

Profiler ウィンドウは以下のようにレイアウトされています。

CPU Usage プロファイラーモジュールが選択された Profiler ウィンドウ
CPU Usage プロファイラーモジュールが選択された Profiler ウィンドウ
  • A: プロファイラーモジュール。これは、アプリケーションでプロファイリングできるすべてのモジュールのリストです。ウィンドウのモジュールを追加したり削除したりするには、このエリアの上部にあるドロップダウンメニューを使用します。
  • B: プロファイラーコントロール。これらのコントロールを使用して、プロファイリングするデバイスと Unity が実行するプロファイリングの種類を設定し、フレーム間を移動し、データの記録を開始します。
  • C: フレームチャート。このエリアには、各モジュールのチャートが含まれています。プロファイラーを初めて開くとこのエリアは空白で、アプリケーションのプロファイリングを開始すると情報が表示されます。
  • D: モジュール詳細パネル。ウィンドウのこのエリアの情報は、選択したモジュールに基づいて変化します。例えば、CPU Usage プロファイラーモジュールを選択すると、詳細な Timeline (タイムライン) と Hierarchy (階層) ビューに切り替えるオプションがあります。Rendering プロファイラーモジュールを選択すると、このエリアにデバッグ情報のリストが表示されます。プロファイラーを初めて開いたときはこのエリアは空白で、アプリケーションのプロファイリングを開始すると情報が表示されます。

Profiler Preferences

The Preferences window contains additional Profiler window settings as follows:

Preference 説明
Frame count Set the maximum number of frames for the Profiler to capture. You can set this number between 300 and 2,000.
Show stats for ‘current frame’ デフォルトでは、Current Frame ボタンを選択して Current Frame モードに入ると、フレームインジケーターラインは現在のフレームの統計情報の注釈を持たなくなります。これは、統計情報の注釈を使用すると、データをリアルタイムで表示することが難しくなる場合があるためです。注釈を表示するには、この設定を有効にします。
Default recording state Select which recording state the Profiler should open in. Choose from Enabled, Disabled, or Remember. Enabled keeps the Record button enabled between sessions, while Disbled disables it, regardless of whether you turn it on or off during your profiling session. The Remember state remembers whether you have enabled or disabled the Record button during your session and keeps it at its last state next time you open the Profiler window.
Default editor target mode Select what mode the Attach to Player dropdown should target by default. Choose from either Playmode or Editor.

プロファイラーコントロール

プロファイラーのコントロールは、Profiler ウィンドウ上部のツールバーにあります。これらを使用して、 プロファイラーデータのレコーディングを開始または停止し、プロファイリングされたフレームをナビゲートします。

コントロール 機能
プロファイリングターゲット Select which target to profile your application on. By default, this is set to Playmode. You can also select Editor to profile the Unity Editor and display the resources that the Editor is currently using.

Unity also automatically detects any devices that are running on your network or connected via USB, and displays them in the drop-down. Click Enter IP in the drop-down to manually enter the IP address of the device you want to profile your application on. For more information, see Profiling your application.
レコーディング これをクリックすると、アプリケーションの実行時にアクティブなモジュールのプロファイリング情報が記録されます。このボタンを有効にしないと、アプリケーションを実行してもプロファイラーはデータを収集しません。
戻る 1 フレーム前に戻ります。
進む 1 フレーム先に進みます。
現在のフレーム 現在のフレーム ボタンをクリックすると、フレームインジケーターのラインが最後に記録されたフレームにジャンプし、プロファイラーは Current Frame (現在のフレーム) モードに入ります。プロファイラーはこのモードでデータを収集しながら、現在のフレームに留まり、収集したデータをリアルタイムで表示します。もう一度ボタンをクリックすると、Current Frame モードが終了します。
フレーム番号 Indicates the frame number you are currently looking at in the Profiler. The number on the left is the current frame selected, and the number on the right is the total number of frames combined that the Profiler collected during your entire Profiling session.
Clear Profiler ウィンドウからすべてのデータを消去します。
Clear on Play これを有効にすると、次に Player ウィンドウで再生ボタンをクリックしたとき、または新しいターゲット デバイスに接続したときに、Profiler ウィンドウからすべてのデータが消去されます。
Deep Profile すべての C# メソッドをプロファイリングするには、この設定を有効にします。この設定を有効にすると、Unity はすべての mono 呼び出しにインストルメンテーションを加えます。これにより、スクリプトのより詳細な調査が可能になります。詳細は ディーププロファイリング を参照してください。
Call Stacks To record call stacks for scripting memory allocations, click this toggle. Frames that the Profiler records when you enable this option have information about the selected samples on the full call stack that lead to a managed scripting allocation, even when Deep Profile is not active. By default, the Profiler records the full call stack information for GC.Alloc samples when you enable this setting, but you can change this to a different sample from the dropdown menu (UnsafeUtility.Malloc, JobHandle.Complete, or Native Allocations). For more information, see the Allocation call stacks section of the CPU Usage Profiler module page.
ロード 保存したプロファイラーデータを Profiler ウィンドウにロードします。プレイヤーが Profiler.logFile API を通してファイルに書き出したバイナリプロファイルデータをロードすることもできます。

Shift ボタンを押しながら Load ボタンをクリックすると、ファイルのコンテンツを現在のプロファイルフレームに追加できます。
保存 プロファイラーデータを Project フォルダーの .data ファイルに保存します。
コンテキストメニュー
Color Blind Mode この設定を有効にすると、プロファイラーのグラフでコントラストの高い色が使用されます。これは、赤緑色覚異常 (例えば、先天赤緑異常、1 型 2 色覚異常、3 型 2 色覚異常) のユーザーのための可視性を向上させます。
Show stats for “current” frame デフォルトでは、Current Frame ボタンを選択して Current Frame モードに入ると、フレームインジケーターラインは現在のフレームの統計情報の注釈を持たなくなります。これは、統計情報の注釈を使用すると、データをリアルタイムで表示することが難しくなる場合があるためです。注釈を表示するには、この設定を有効にします。
Preferences Preferences メニューを開くと、プロファイラー固有のプロパティーを調整できます。

オーバーヘッドを低く維持するために、Unity はエディター UI の 5 フレームごとに再描画します。これにより、少しぎこちない更新になります。

ディーププロファイリング

通常、プロファイラーは、ProfilerMarkers に明示的に包まれているコード部分をプロファイリングします。これには、エンジンのネイティブ コードからスクリプトコードへの呼び出し (例えば、MonoBehaviourStartUpdate、または類似のメソッドなど) の最初のコールスタックの深さが含まれます。

独自のコードにさらに明示的な ProfilerMarker インストルメンテーションを加えなくても、スクリプトコードの子サンプルとして表示できる他のサンプルは、その API がインストルメント化されている場合に、Unity の API にコールバックできるサンプルのみです。パフォーマンスのオーバーヘッドを伴うほとんどの API 呼び出しはインストルメント化されています。例えば、Camera.main API を通してメインカメラにアクセスすると、FindMainCamera サンプルとして記録されます。

Deep Profile 設定を有効にすると、プロファイラーはスクリプトコードのすべての部分をプロファイリングし、少なくとも最初のコールスタックの深さを含むすべての関数呼び出しを Unity API に記録します。これは、コードがアプリケーションのパフォーマンスに影響を与える箇所を改善するのに役立つ情報ですが、オーバーヘッドが増加します。

アプリケーションにディーププロファイリングを行うと、Unity はすべてのスクリプトメソッドにプロファイラーのインストルメンテーションを挿入し、すべての関数呼び出しをレコードします。これは、アプリケーションコードが最も時間を費やす場所を理解するのに役立ちます。

ディーププロファイリングはリソースを大量に消費し、多くのメモリを使用します。結果として、プロファイリング中はアプリケーションの実行が著しく遅くなります。ディーププロファイリングは、簡単なスクリプトで動く小さなゲームに適しています。複雑なスクリプトコードを使用している場合、アプリケーションでディーププロファイリングをまったく使用できない場合があります。また、大きなアプリケーションの多くでは、ディーププロファイリングによって Unity のメモリが不足する場合があります。

プロファイラーにサンプルを流すためのリングバッファに保存するには、サンプルが多すぎるという問題が発生した場合、Unity はエラーメッセージを表示します。リングバッファのサイズを増やすには、プロファイリングするプレイヤーの Profiler.maxUsedMemory プロパティーを調整します。

ディーププロファイリングによってアプリケーションのフレームレートが大幅に低下し、実行が不可能にな場合は、スクリプトコードのブロックを手動でプロファイリングできます。これにより、ディーププロファイリングよりオーバーヘッドが小さくなります。ProfilerMarkers を使用して、スクリプトブロックをマークアップするために必要なインストルメンテーションを手動で加えます。これらは CPU Usage プロファイラーモジュール に表示されます。

ディーププロファイリングなしで GC.Alloc サンプルを発生させるコールスタックを見つけるには、アロケーションコールスタック のコレクションを有効にします。プロファイラーコントロールの Call Stacks 設定を有効にすると、タイムラインビューで GC.Alloc サンプルを選択するか、Hierarchy ビューの Show Related Objects パネルを使用してこれらのサンプルのコールスタックを見つけることができます。詳細については、CPU プロファイラーモジュール のアロケーションコールスタックのドキュメントを参照してください。

プロファイラーモジュール

Profiler ウィンドウの上部は、ゲームの特定の領域をプロファイリングする Profiler Modules (プロファイラーモジュール) に分かれています。アプリケーションをプロファイリングすると、Unity は各モジュールに関連するデータを対応するチャートに表示します。

CPU Usage モジュールは、 アプリケーションが各フレームに費やす時間に関する最適な概要を提供します。他のモジュールはより具体的なデータを収集し、より具体的な領域を調べたり、メモリ消費、レンダリング、 オーディオ統計など、 アプリケーションの重要な要素を監視するのに役立ちます。

各モジュールには独自のチャートがあります。任意のモジュールを選択すると、モジュール詳細パネルがウィンドウの下方に表示されます。これを使ってモジュールが収集した詳細なデータを検査できます。

Profiler Modules 機能
CPU Usage 物理演算、スクリプト、アニメーション、ガベージコレクションなど、アプリケーションが最も時間を費やすエリアの概要を表示します。このモジュールには、アプリケーションに関する幅広いプロファイリング情報が含まれています。このモジュールを使用して、 アプリケーションのより具体的な問題を調査するために使用するモジュールを決定できます。このモジュールは、たとえ閉じても常にアクティブです。CPU Usage プロファイラーモジュール を参照してください。
GPU Usage グラフィックス処理に関する情報を表示します。オーバーヘッドが高いため、デフォルトではこのモジュールはアクティブではありません。GPU Usage プロファイラーモジュール を参照してください。
Rendering Unity がアプリケーションでグラフィックスをどのようにレンダリングするかに関する情報を表示します。静的および動的バッチ処理、SetPass と Draw の呼び出し、三角形、頂点などの情報が含まれます。Rendering プロファイラーモジュール を参照してください。
Memory Unity がアプリケーションでメモリをどのように割り当てるかに関する情報を表示します。これは、スクリプティングアロケーション (GC.Alloc) がどのようにガベージコレクションにつながるのか、またはアプリケーションのアセットメモリ使用量の経時的変化を確認するのに特に役立ちます。Memory プロファイラーモジュール を参照してください。
Audio オーディオソースを再生するタイミングと回数、オーディオシステムに必要な CPU 使用量、Unity がそれに割り当てるメモリ量など、アプリケーションのオーディオに関する情報を表示します。Audio プロファイラーモジュール を参照してください。
Video アプリケーションの ビデオ に関する情報を表示します。Video プロファイラーモジュール を参照してください。
Physics 物理演算エンジンが処理したアプリケーションの物理演算に関する情報を表示します。Physics プロファイラーモジュール を参照してください。
Physics (2D) Similar to the Physics Profiler module, this module displays information about where the physics engine has processed 2D physics in your application. See 2D Physics Profiler module.
Network Messages
(非推奨)
マルチプレイヤー高レベル API によって送受信される低レベルのパケットとメッセージに関する情報を表示します。
ノート: マルチプレイヤー高レベル API は非推奨です。
Network Operations
(非推奨)
マルチプレイヤー高レベル API によって送受信される低レベルのパケット (SyncVar やコマンドの送信数など) とメッセージに関する情報を表示します。
ノート: マルチプレイヤー高レベル API は非推奨です。
UI Displays information about how Unity handles UI batching for your application, including why and how Unity batches items. See UI and UI Details Profiler module.
UI Details Similar to the UI Module, this module’s chart adds data about batch and vertices count, as well as markers which include information about user input events that trigger UI changes. See UI and UI Details Profiler module
Global Illumination Unity がアプリケーションのグローバルイルミネーション (GI) ライティングサブシステムに費やす CPU リソースに関する情報を表示します。Global Illumination Profiler ウィンドウ を参照してください。
Virtual Texturing Displays statistics about Streaming Virtual Texturing in your application. See the Virtual Texturing Profiler module.

プロファイラーモジュールのオーバーヘッド

GPU、UI、Audio Profiler モジュールなどの一部の Profiler モジュールでは、大きなデータ収集オーバーヘッドがあります。これらのモジュールがアプリケーションのパフォーマンスに影響を与えないようにするには、Profiler Module ドロップダウンで選択を解除して非アクティブにします。これにより、ウィンドウからモジュールが削除され、プロファイラーによるモジュールのデータ収集が停止され、プロファイラーのオーバーヘッドが減少します。

アクティブでないときでも常にデータを収集する CPU Usage モジュールには適用されません。なぜなら、他のモジュールが依存しているためです。

モジュールを追加するには、Profiler Module ドロップダウンを選択し、アクティブにしたいプロファイラーを選択します。ドロップダウンからプロファイラーモジュールを選択すると、データの収集を開始しますが、アクティブでなかった期間のデータは表示されません。

To avoid the overhead of the GPU Profiler module, it is not active by default. The GPU Profiler module must be active at the start of your application to hook into the graphics driver. If you add it later, it has no effect on most platforms, and the Profiler displays the message “GPU profiling is not supported by the graphics card driver (or it was disabled because of driver bugs)”.

Profiler ウィンドウを使わずに Profiler.logFile API を使用してデータを収集しディスクに送信するようにプロファイラーに指示する場合は、 Profiler.SetAreaEnabled() を使用してプロファイラーモジュールをオフにすることができます 。

外部 IDE を通してスクリプトをデバッグする設定の中には、オーバーヘッドが発生するものもあります。このオーバーヘッドを避け、より正確な測定値を得るには、Editor Attaching 設定を無効にします (Preferences > External Tools)。同様に、ビルドプレイヤーをプロファイリングするときは、 Build Settings を開き、 Script Debugging を無効にしてオーバーヘッドを回避します。

プロファイラーフレームチャート

Profiler ウィンドウの上部には、経時的なパフォーマンスデータがフレームごとに表示されます。アプリケーションを実行すると、プロファイラーは各フレームのデータを記録します。デフォルトでは、Profiler ウィンドウにはプロファイリングされた最後の 300 フレームの履歴が表示されます。Preferences ウィンドウでプロファイリングするフレーム数を最大 2,000 まで増やすことができます。

Profiler ウィンドウのプロファイラーフレームチャートエリアをクリックすると、白い線が表示され、アプリケーションのフレームの 1 つが強調表示されます。フレーム間を移動するには、Profiler ウィンドウのツールバーの 移動コントロール を使用します。

Unity はチャートの垂直方向のスケールを自動的に管理し、チャートはウィンドウの垂直方向のスペースを埋めようとします。チャートの詳細を表示するには、他のプロファイラーモジュールを削除するか、チャートと詳細統計エリアの間の境界線をドラッグして、チャートの画面領域を増やします。

To toggle hiding and displaying a metric in a chart, click the colored square next to its label in its module. This can be useful to identify the causes of spikes. In stacked charts such as the CPU Usage Profiler’s chart, you can reorder the metric labels to affect the stacking order, which helps make more prominent metrics more visible.

各プロファイラーモジュールは、異なるパフォーマンスデータの指標を収集し、別々のチャートに表示します。フレームをクリックすると、Unity は Profiler ウィンドウの下半分のモジュール詳細パネルにフレームの詳細を表示します。このウィンドウの詳細のタイプは、選択するプロファイラーモジュールによって異なります。各モジュールがこのエリアに表示する特定の詳細については、プロファイラーモジュール の個々のドキュメントを参照してください。

Standalone Profiler

To use the Standalone Profiler, go to Window > Analysis > Profiler (Standalone process). When you select the Standalone Profiler, Unity launches the Profiler outside of the Unity Editor’s process, and instead launches the Profiler in a new, separate process.

Launching the Profiler in its own dedicated process ensures cleaner Profiler data when you target the Editor or Play mode. It also reduces overhead, because the Profiler isn’t profiling itself or sharing a process with your application or the Editor. The functionality and controls of the Profiler remain the same as when you run the Profiler in the same process as the Editor.

Menu selection for the Standalone Profiler
Menu selection for the Standalone Profiler

When you start a separate process for the Profiler window, it takes longer to start up than opening it in the same process as the Editor. You cannot dock any Editor windows that are connected to the separate process to the main process’s windows. Additionally, when you restart the Editor, Unity does not re-open the windows in the out-of-process Profiler.

コマンドライン引数

ビルドしたプレイヤーや Unity エディターをコマンドライン (Windows のコマンドプロンプト、macOS のターミナル、Linux シェル、Android の adb など) から起動する場合は、コマンドライン引数を渡してプロファイラーの設定を行うことができます。

コマンドライン引数 説明
-deepprofiling ビルドしたプレイヤーでディーププロファイリングを有効にします。
-profiler-enable プレイヤーやエディターの起動をプロファイリングします。プレイヤーでこの引数を使用すると、Build Settings で Autoconnect Profiler オプションを有効にしてプレイヤーをビルドするのと同じ効果があります。

エディターでこの引数を使用すると、エディターの起動時に Profiler ウィンドウでプロファイラー情報の収集と表示を開始します。
-profiler-log-file <Path/To/Log/File.raw> この引数は、プロファイルデータを .raw ファイルに送信するようにプロファイラーを設定します。プレイヤーとエディターの両方で使用できます。
-profiler-capture-frame-count <NumberOfFrames> この引数は、起動時に .raw ファイルに送信する場合に、プロファイルでキャプチャするフレーム数を設定します。プレイヤーでのみ機能します。
-profiler-maxusedmemory デフォルトでは、maxUsedMemory はプレイヤー用に 16MB、エディター用に 256MB です。この引数を使用して、起動時に maxUsedMemory パラメーターをカスタムサイズに設定できます (例えば、-profiler-maxusedmemory 16777216)。サイズはバイト単位で設定します。

  • Added Out-of-process Profiler in 2020.1 NewIn20201
Profiler overview
Audio プロファイラーモジュール