「Unity/負荷軽減/Profiler」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→遊び時間除去) |
(→処理時間の目安) |
||
行36: | 行36: | ||
==処理時間の目安== | ==処理時間の目安== | ||
+ | 公式ページにデバイスの温度と処理時間に関するデータが有る。 | ||
+ | |||
*60 fps なら1フレーム辺りの処理時間を11msぐらいに | *60 fps なら1フレーム辺りの処理時間を11msぐらいに | ||
*30 fps なら1フレーム辺りの処理時間を22msぐらいに | *30 fps なら1フレーム辺りの処理時間を22msぐらいに | ||
行44: | 行46: | ||
公式:https://blog.unity.com/ja/games/optimize-your-mobile-game-performance-tips-on-profiling-memory-and-code-architecture-from | 公式:https://blog.unity.com/ja/games/optimize-your-mobile-game-performance-tips-on-profiling-memory-and-code-architecture-from | ||
<pre> | <pre> | ||
− | + | モバイル環境ではデバイスが過熱〜、フレーム間で冷却できるように、使える時間予算の約 65% くらいに抑えることをお勧めします。一般的なフレーム予算は、30 fps なら約 22 ms / フレーム、60 fps なら約 11 ms / フレームとなります。 | |
</pre> | </pre> | ||
2023年8月28日 (月) 11:08時点における版
目次
Profiler確認
- unityメインメニュー/Window/Analysis/Profilerで確認
- playボタンを押すと動作する
使用状況詳細確認
- ProfilerでCPU Usageを選択
- 左中段にある、cmbボタンを選択し、Hierarchyを選択。
- Liveを選択
- GC Allocなど確認できる。
実行中に使用状況を確認する場合
- play実行
- ProfilerでCPU Usageを選択
- 左中段にある、cmbボタンを選択し、Hierarchyを選択。
- グラフのどこかをクリックして、選択
- PlayerLoopのところを展開していく。
参考: https://light11.hatenadiary.com/entry/2019/09/19/000006
Other項目について
アプリケーションが他のカテゴリに分類されないコードに費やす時間。これには、EditorLoop すべてや、エディターで再生モードをプロファイルするときのプロファイリングオーバーヘッドなどが含まれるとあるが、体感としては、Otherで調整されるので、Otherは遊びと捉えても良いのではと思ってます。
公式:https://docs.unity3d.com/ja/2022.3/Manual/ProfilerCPU.html
遊び時間除去
fpsを60,30,15にしたとき、体感としては、Otherで調整されるので、Otherは遊びと捉えることができる。 処理時間を計測するときは、Otherを除去してTime msを確認すると良い。
例:fpsを60固定にしたい場合
Application.targetFrameRate = 60;
処理時間について
Time msは、下層も含んだ処理時間で、Selfは下層を含まない処理時間。 https://docs.unity3d.com/ja/2018.4/Manual/ProfilerCPU.html
処理時間の目安
公式ページにデバイスの温度と処理時間に関するデータが有る。
- 60 fps なら1フレーム辺りの処理時間を11msぐらいに
- 30 fps なら1フレーム辺りの処理時間を22msぐらいに
- 15 fps なら1フレーム辺りの処理時間を44msぐらいに
=1/fps*1000*0.65 の計算
モバイル環境ではデバイスが過熱〜、フレーム間で冷却できるように、使える時間予算の約 65% くらいに抑えることをお勧めします。一般的なフレーム予算は、30 fps なら約 22 ms / フレーム、60 fps なら約 11 ms / フレームとなります。
PCで正しく解析する
GameWindowだけでなく、SceneWindowを表示したままにすると、負荷が上がるので、SceneWindowのタブは閉じるか、tab切り替えで表示しないようにする。
DynamicBatchingをonに
URPで、OpenGL ES 3.0のとき、useSRPBatcher をoffにして、DynamicBatchingをonに
using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; if (SystemInfo.graphicsDeviceVersion.Contains("OpenGL ES 3.0")) { var pipeline = GraphicsSettings.currentRenderPipeline as UniversalRenderPipelineAsset; pipeline.useSRPBatcher = false; pipeline.supportsDynamicBatching = true; }
参考:https://amagamina.jp/blog/srp-batcher/
SetPassCallsについて
- Analysis/左中段にあるRenderringを選択すると見れる
- モバイルだと200以下が良い。