ドキュメント

Unity Engine

Unity Engine

ビルトインプロファイラーによるパフォーマンスの測定

Use and configure the built-in profiler for iOS.
読み終わるまでの所要時間 11 分最終更新 1ヶ月前

注意内部プロファイラーは非推奨で、Unity の将来のバージョンで廃止される予定です。代わりに Profiler ウィンドウ (メニュー: Window > Analysis > Profiler) を使用してください。iOS デバイスをプロファイルする方法の詳細は、iOS デバイスでのパフォーマンスデータの収集を参照してください。
Unity には、iOS 用のビルトインプロプロファイラーが含まれており、アプリケーションの実行状況を把握できます。ビルトインプロファイラーは、デバイス上で実行されているアプリケーションから 30 フレームごとにコンソールメッセージを発行しますが、これは CPU 依存か GPU 依存かの判断を支援します。アプリケーションが CPU 依存の場合は、スクリプトコードとガベージコレクションのどちらがボトルネックの原因かを判断することもできます。
以下は、ビルトインプロファイラーの出力例です。
iPhone Unity internal profiler statsframetime> min: 32.5 max: 34.1 avg: 33.3cpu-player> min: 2.2 max: 4.4 avg: 3.7batches> min: 3 max: 3 avg: 3draw calls> min: 3 max: 3 avg: 3tris> min: 1704 max: 1704 avg: 1704verts> min: 5088 max: 5088 avg: 5088dynamic batching> batched draw calls: 0 batches: 0 tris: 0 verts: 0static batching> batched draw calls: 0 batches: 0 tris: 0 verts: 0player-detail> physx: 0.0 animation: 0.0 culling 0.0 skinning: 0.0 batching: 0.0 render: 0.0 fixed-update-count: 0 .. 0scripting-scripts> update: 0.0 fixedUpdate: 0.0 coroutines: 0.0 scripting-memory> information not available on non-development player configuration
すべての時間はミリ秒/フレームで測定されます。直近 30 フレームの最短時間、最長時間、平均時間を確認できます。

一般的な CPU アクティビティ

プロパティ

機能

cpu-playerアプリケーションが Unity エンジンの中でコードを実行したり、CPU でスクリプトを実行する時間を表示します。
cpu-ogles-drv (Android のみ)CPU 上での OpenGL ES ドライバーコードの実行に要する時間を表示します。ドローコール、内部レンダリングのステート変更、レンダーパイプラインの設定、処理された頂点数などのいくつかの要因が、ドライバーの統計に影響します。
cpu-present (Android のみ)OpenGL ES の
presentRenderbuffer
コマンド実行に要した時間。
frametimeアプリケーションフレームの総時間を表します。iOS ハードウェアは 60Hz のリフレッシュレートにロックされているため、常に 16.7ms (1000ms/60Hz = 16.7ms) の倍数の時間を返します。

レンダリング統計

プロパティ

機能

tris #レンダリングに送信される三角形の総数を表示します。
verts #レンダリングに送信される頂点の総数。アプリケーションが静的ジオメトリのみを使用する場合は、この数値を 10000 未満に保つ必要があります。アプリケーションでスキンジオメトリのインスタンスを多数使用する場合は、この数ははるかに少なくなります。
dynamic/static batchingエンジンにより自動的にバッチ処理されたドローコール、三角形、および頂点の数。この数をドローコールと三角形の総数と比較することで、シーンがバッチ処理するのに適しているか判断する材料となります。バッチ処理を改善するには、オブジェクト内でできる限りマテリアルを共有するべきです。

詳しい Unity プレイヤー統計情報

player-detail セクションには、エンジン内部の状況の詳細な内訳が表示されます。

プロパティ

機能

physx物理エンジンの計算に要した時間を表示します。
animationボーンアニメーションに要した時間を表示します。
cullingカメラの Frustum 外のオブジェクトカリングに要した時間を表示します。
skinningスキンメッシュへのアニメーション適用に要した時間を表示します。
batchingジオメトリのバッチ処理に要した時間。動的なジオメトリのバッチ処理は静的なジオメトリのバッチ処理より、リソースの負担が顕著に高くなります。
render表示されるオブジェクトのレンダリングに要した時間を表示します。
fixed-update-countこのフレームで実行される FixedUpdate の最小数と最大数。FixedUpdate の数が大きすぎると、パフォーマンスが著しく低下します。

詳しいスクリプト統計

scripting-scripts セクションは、 Mono ランタイムでコードを実行するのに要した時間の詳細な内訳を提供します。

プロパティ

機能

updateスクリプトのすべての
Update()
メソッド実行に要した総時間を表示します。
fixedUpdateスクリプトのすべての
FixedUpdate()
メソッド実行に要した総時間を表示します。
coroutinesスクリプトのコルーチン内で要した時間を表示します。

スクリプトによって割り当てられたメモリに関する詳細な統計を表示します。

scripting-memory セクションは、Mono ガベージコレクターによるメモリの管理状況に関する情報を提供します。

プロパティ:

機能:

allocated heap割り当て可能なメモリの総量。所定の割り当てに十分なメモリがヒープにない場合、ガベージコレクションがトリガーされます。これで十分なメモリが解放されない場合、割り当てられたヒープのサイズが増加します。
used heap現在、オブジェクトが使用している allocated heap の量。この数は、新しいクラスインスタンス (構造体ではない) を作成するたびに、次のガベージコレクションまで増え続けます。
max number of collections直近 30 フレームでのガベージコレクションが行われた回数を表示します。
collection total duration直近 30 フレームでのガベージコレクションの総時間 (ミリ秒単位) を表示します。

設定方法

iOS では、内部プロファイラーがデフォルトで無効になっています。有効にするには、以下のいずれかのプロセスを使用します。

Xcode プロジェクト

Xcode プロジェクトから内部プロファイラーを有効にするには、以下の手順に従います。
  1. Unity が生成した Xcode プロジェクトを開きます。
  2. InternalProfiler.h
    ファイルを選択します。
  3. 以下の
#define ENABLE_INTERNAL_PROFILER 0
の行を以下のように変更します。
#define ENABLE_INTERNAL_PROFILER 1

Player 設定

Unity で内部プロファイラーを有効にするには、以下の手順に従います。
  1. メインメニューで、Edit > Project Settings > Player Settings > iOS を選択します。
  2. Debugging and crash reporting セクションで、Enable Internal Profiler (Deprecated) を有効にします。
ノート: アプリケーションをビルドするときに、Build Settings から Development Build オプションが有効になっていることを確認します。

コンソールの表示

出力コンソールを表示するには、Xcode で View > Debug Area > Activate Console を選択してプロジェクトを実行します。Unity は統計情報を 30 フレームごとにコンソールウィンドウに表示します。