Version: Unity 6.0 (6000.0)
言語 : 日本語
モバイルのための最適化
iOS プレイヤーのサイズの最適化

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

注意内部プロファイラーは非推奨で、Unity の将来のバージョンで廃止される予定です。代わりに Profiler ウィンドウ (メニュー: Window > Analysis > Profiler) を使用してください。iOS デバイスをプロファイルする方法の詳細は、iOS デバイスでのパフォーマンスデータの収集を参照してください。

Unity には、iOS 用のビルトインプロプロファイラーが含まれており、アプリケーションの実行状況を把握できます。ビルトインプロファイラーは、デバイス上で実行されているアプリケーションから 30 フレームごとにコンソールメッセージを発行しますが、これは CPU 依存か GPU 依存かの判断を支援します。アプリケーションが CPU 依存の場合は、スクリプトコードとガベージコレクションのどちらがボトルネックの原因かを判断することもできます。

以下は、ビルトインプロファイラーの出力例です。

iPhone Unity internal profiler stats
frametime>     min: 32.5   max: 34.1   avg: 33.3
cpu-player>    min:  2.2   max:  4.4   avg:  3.7
batches>       min:   3    max:   3    avg:   3
draw calls>    min:   3    max:   3    avg:   3
tris>          min:  1704  max:  1704  avg:  1704
verts>         min:  5088  max:  5088  avg:  5088
dynamic batching> batched draw calls:   0 batches:   0 tris:     0 verts:     0
static batching>  batched draw calls:   0 batches:   0 tris:     0 verts:     0
player-detail> physx:  0.0 animation:  0.0 culling  0.0 skinning:  0.0 batching:  0.0 render:  0.0 fixed-update-count: 0 .. 0
scripting-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 フレームごとにコンソールウィンドウに表示します。

モバイルのための最適化
iOS プレイヤーのサイズの最適化