CPU Usage プロファイラーモジュールは、Profiler ウィンドウ の上半分が複数のチャートで分かれており、下半分が詳細ペインの Timeline ビューと Hierarchy ビューになっています。
CPU Usage Profiler モジュールのチャートは、アプリケーションのメインスレッドで費やされた時間を追跡します。
| Chart | 説明 |
|---|---|
| レンダリング | アプリケーションがグラフィックスのレンダリングに費やす時間。 |
| Scripts | アプリケーションがスクリプトの実行に費やす時間。 |
| 物理演算 | アプリケーションが物理演算エンジンに費やす時間。 |
| Animation | アプリケーションがアプリケーション内のスキンメッシュレンダラー、ゲームオブジェクト、その他のコンポーネントをアニメーション化するのに費やす時間。これには、Animation コンポーネントと Animator コンポーネントが使用するシステムが計算に要した時間も含まれます。 |
| GarbageCollector | アプリケーションが ガベージコレクター の実行に費やす時間。 |
| VSync | アプリケーションが targetFrameRate または次の VBlank の同期を待機するフレームあたりの時間。VSync 値を決定するために、Unity はアプリケーションを実行しているプラットフォームの QualitySettings.vSyncCount 値、ターゲットフレームレート、VSync のデフォルト値または強制最大値を使用します。VSync の詳細は、プロファイラーマーカーに関するドキュメントを参照してください。 |
| グローバルイルミネーション | アプリケーションがライティングに費やす時間。 |
| UI | アプリケーションが UI の表示に費やす時間。 |
| Others | 他のカテゴリに分類されないコードにアプリケーションが費やす時間。これには、EditorLoop すべてや、エディターで 再生モードをプロファイル するときのプロファイリングオーバーヘッドなどが含まれます。詳細は、再生モードとエディターのサンプル を参照してください。 |
CPU Usage モジュールを選択すると、その下の詳細ペインに選択したフレームのアプリケーションが使った時間の詳細が表示されます。ペインの上部にあるツールバーを使用してビューを操作します。
| プロパティ | 説明 | |
|---|---|---|
| タイミングデータビュードロップダウン | タイムラインまたは階層テーブルのどちらでタイミングデータを表示するかを選択します。表示を変更するには、詳細ペインのドロップダウンを使用します (デフォルトでは Timeline に設定)。 | |
| # Timeline | 特定のフレームのタイミングの詳細をフレームの長さの時間軸とともに表示します。 すべてのスレッドのタイミングを一度に、フレーム内の発生時間で確認できるのは Timeline ビューのみです。これにより、スレッド間でタイミングを相互に関連付けることができます。例えば、ジョブシステム ワーカースレッドは、メインスレッド上のシステムによるスケジュールの後に起動します。 |
|
| 階層 | 内部の階層構造によってタイミングデータをグループ化します。このビューでは、アプリケーションが呼び出した要素を、使用された時間の降順 (デフォルト) のリスト形式で表示します。また、割り当てられたスクリプトのメモリの量、または呼び出し回数で情報を並べ替えることもできます。 | |
| Raw Hierarchy | タイミングデータを、タイミングが発生したコールスタックと同様の階層構造で表示します。このモードでは、Hierarchy ビューのように各コールスタックをマージせず個別にリストします。 | |
| Inverted Hierarchy | サンプルをプロファイラーマーカーでグループ化し、反転したサンプルスタックで表示します。階層の最初のレベルには、各プロファイラーマーカーの項目が表示されます。 ツリー内の項目を展開すると、サンプルスタックにこの項目を含むマーカーが表示されます。このオプションは、パフォーマンスに小規模に影響する多数のインスタンスが原因となって発生する、より大きなパフォーマンスの問題を明らかにするために役立ちます。このような問題は、Timeline ビューや非反転階層ビューでは見つけにくい場合があります。 |
|
| ライブ設定 | 再生モードまたはエディターで新しいデータを記録するときに、モジュールの詳細ペインに選択したフレームに関するデータをリアルタイムで表示します。デフォルトではこの設定は無効になっており、データを記録するときモジュールの詳細ペインは空白です。 注意この設定により、Profiler ウィンドウが再描画されるときに EditorLoop のオーバーヘッドが増加します。 |
|
| スレッドセレクタ― (Hierarchy ビューのみ) | Thread ドロップダウンを使用して、ビューで検査するメインスレッドやレンダースレッドなど、特定のスレッドを選択します。 | |
| 詳細ドロップダウン (階層ビューのみ) | アプリケーションがプロファイルされた関数を呼び出し、使用する場所に関する情報を表示します。 | |
| No Details | 余分な情報を非表示にします。 | |
| Related data | プロファイラーのサンプルに関連付けられている Begin オーバーロードを使用する UnityEngine.Objects のリストを表示します。 |
|
| Calls | 選択されたサンプルがどこから呼び出されているか、他のどの関数を呼び出すかを表示します。 | |
その他の (⋮) メニューには、以下の設定項目があります。
| 設定 | 説明 | |
|---|---|---|
| Show Scripting Method Names | すべてのスクリプトメソッド (Assembly::Class::MethodName) の完全修飾名を表示します。 |
|
| Show Flow events (Timeline ビューのみ) | システム、ジョブ、スレッドの関係を表示します。この設定を有効にすると、ジョブをスケジュールしたり、スケジュールされたジョブが完了するのを待ったりするプロファイラーサンプルに、白いイベントマーカーが追加されます。また、関係ないサンプルを暗くすることで、選択したサンプルをよりわかりやすく可視化することができます。 サンプルを選択すると、プロファイラーは関連するフローイベントマーカーを線でつなぎます。太い線は、選択した特定のフローラインを強調します。例えば、 begin のサンプルが他の 2 つの next のサンプルを指している場合、next のサンプルの 1 つをクリックすると、プロファイラーはそのサンプルに向かって太い線を引きます。プロファイラーがサンプルに追加する矢印の種類は以下の通りです。 |
|
| 下矢印 (▿) | フローの始まりを示し、このサンプルが何らかの作業を予定していることを示します。 | |
| 右矢印 (▹) | フローの中で次の項目を示し、これを予定したのは別のサンプルであることを示します。 | |
| 上矢印 (▵) | フローの終わりを示し、このサンプルで作業が終了、または同期したことを示します。 | |
| Collapse EditorOnly Samples (Hierarchy ビューのみ) | ビューに EditorOnly サンプルを表示します。デフォルトでは、Unity は階層ビューですべての EditorOnly サンプルを折りたたみます。EditorOnly サンプルは、エディターの安全性チェックのためだけに発生する Player Loop のサンプルです。折りたたまれている場合、EditorOnly サンプルの GC.Alloc 値はそれらを含むサンプルの GC.Alloc 値に影響しません。詳細は、再生モードとエディターのサンプル を参照してください。 |
|
Timeline ビューでサンプルを選択すると、選択したサンプルのツールチップに、インスタンス数やすべてのスレッドにわたるこのサンプルの合計時間などの詳細が表示されます。ツールチップ内のテキストを選択してコピーし、ボタンを使用してサンプルをさらに相互作用させることができます。
| ツールチップ | 説明 | |
|---|---|---|
| コピー | コールスタックとツールチップの内容全体をクリップボードにコピーします。 | |
| Show | このドロップダウンを選択すると、さまざまなコンテキストでサンプルを表示できます。 | |
| 階層 | 選択したサンプルの表示を Hierarchy ビューに変更します。 | |
| Raw Hierarchy | 選択したサンプルの表示を Raw Hierarchy ビューに変更します。 | |
| Inverted Hierarchy | 選択したサンプルの表示を Inverted Hierarchy ビューに変更します。 | |
| Full Details for Call Stacks | このプロパティを有効にすると、コールスタックのメソッドポインターアドレスの全リストを表示できます。 Unity はコールスタックをメソッドポインターアドレスのリストとして記録し、メソッド名、ファイルパス、およびスタックの行番号の表示に使用します。ポインターアドレスだけが存在する場合、Unity はポインターアドレスを無視し、詳細情報を持つアクション可能な項目のためにスクリーンスペースを節約します。 |
|
| Selected Sample Stack | サンプルスタックの詳細を表示します。Unity はこの情報を別のウィンドウで開きます。サンプルスタック情報はクリップボードにコピーできます。 サンプルスタックはメソッドのコールスタックと異なり、すべてのサンプルを特定のメソッドに結び付けたり、すべての呼び出しをサンプルとして記録したりしません。別のフレームのサンプルを選択し、表示されたフレームに同じサンプルスタックを持つサンプルがない場合、このウィンドウには、元の選択とこのフレーム内のおおよその選択の両方のサンプルスタックが表示されます。 |
|
階層ビューでは、各項目の以下の詳細情報を表示します。
| 列 | 説明 |
|---|---|
| Total | Unity が特定のサンプルに費やした合計時間。合計フレーム時間に対するパーセンテージで表示されます。 |
| Self | 特定のサンプルに Unity が費やした合計時間。合計フレーム時間に対するパーセンテージで表示され、サブサンプルの時間は含まれません。 |
| Calls | フレーム内でその関数に対して行われた呼び出しの数。Raw Hierarchy ビューでは、プロファイラーはサンプルの階層をマージしないため、この列の値は常に 1 です。 |
| GC Alloc | Unity が現在のフレームに割り当てたスクリプトヒープメモリの量。ガベージコレクターは、スクリプトヒープメモリを管理します。 マネージヒープの詳細は、自動メモリ管理 に関するドキュメントを参照してください。 |
| Time ms | Unity が特定のサンプルに使った総時間 (ミリ秒)。 注意アプリケーションが ジョブシステム やマルチスレッドレンダリングを使用する場合、現在選択しているスレッドで費やした時間しか含まれていないため、この情報は誤解を招く可能性があります。スレッドを変更するには、Hierarchy ペインの上部にある Thread ドロップダウンを選択します。 |
| Self ms | Unity が特定のサンプルに費やした合計時間 (ミリ秒)。サブ関数を呼び出す時間は除きます。 |
| 警告 (⚠) | 現在のフレーム中にアプリケーションが警告をトリガーした回数を表示します。詳細は、パフォーマンスの警告 を参照してください。 |