テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

iOSでパフォーマンスに悪影響を与えるボトルネックを確認

パフォーマンスの確認と言えばInstrumentsが上がりますが、最近のXcodeはもっとシンプルにパフォーマンスをプロファイル出来るみたいです。

 

f:id:tsubaki_t1:20140803043332j:plain

 

Xcodeでゲームを実行した状態で、真ん中付近のタブを押すと、CPUの使用率やメモリ消費量、それにフレーム単位のGPUとCPUの負荷等が判るようになっています。

コレを使えば、GPUの負荷が高ければGPU・CPUの負荷が高ければCPU、アプリが落ちるならメモリ等々、何がボトルネックになっているのか概ね把握する事ができます。

 

f:id:tsubaki_t1:20140803043155j:plain

f:id:tsubaki_t1:20140803043200j:plain

f:id:tsubaki_t1:20140803043207j:plain

 

また、このFPSチェック時にAnalyzeボタンをクリックすると、どの描画時に一番時間がかかっているのかが判りやすく表示されます。詳細を確認すると、負荷の高い処理は何を描画している最中なのか等も分かり便利です。

f:id:tsubaki_t1:20140803043754j:plain

 

ドローコールを一つ一つ確認し、どのタイミングで描画されているかを確認する事も簡単に可能です。

f:id:tsubaki_t1:20140803044505g:plain

上手く使えば、負荷が高いのが「ちりも積もれば山となった」なのか、ボトルネックがあるのかが分かります。場当たり的に対処するよりも、まずは敵が何なのか知っとくと良さそうです。

大抵の場合、「広い範囲を透明で何度も書いてる」か「重いシェーダーを画面いっぱいに描画してる」等々が原因のケースが多いみたいです。前者は画面いっぱいに透明を書いている場合。後者はユニティちゃんのシェーダーやUnity付属のMobileと付いていないシェーダーを使っている場合。

。昔はドローコールも大事だったのですが、最近はそこまで重要では無いみたいです。

 

CPUでかかっている負荷の調査はInstrumentsかUnityのプロファイラを使いましょう。ソースコードレベルの最適化も大事ですが、まずはCPUでも何がボトルネックなのか探してから対処した方が良いです。

 

Androidの場合は…どうなんでしょうね。 端末にプロファイラ突っ込んで頑張って検証しているケースが多いような印象です。後はサードパーティ製のプロファイラとか。何か情報があれば是非下さい。