Diagnosing Performance Problems 学习

https://learn.unity.com/tutorial/diagnosing-performance-problems

Diagnosing performance problems using the Profiler window

  Introduction

Different problems requrie very different solutions

  Before we begin 

  A brief introduction to performance in games

Frame rate is standard measure of performance in games. 

  Recording profiling data 

  Analyzing profiling data

As we know, frame rate drops occur when Unity is unable to complete all of the tasks required to render a frame in a timely manner. 

    The CPU usage profiler 

    The Hierarchy view 

    The Timeline view

The Timeline view shows us two things: the order in which CPU tasks are performed, and which thread is responsible for which tasks.

Threads allow separate tasks to happen simultaneously; while one thread performs one task, another thread can perform a completely separate task. There are three types of thread invovled in Unity's rendering process: the main thread, the render thread and  worker threads

We can see that Shadows.RenderJob calls functions that take place on the main thread. We can also see worker threads performing tasks related to shadows.

    Other profilers 

  Determining the cause of performance problems 

    Rule out VSync

Vertical Synchronization, known as VSync, is used to match a game's frame rate to the refresh rate of the screen it is being displayed on. 

    Hiding VSync information in the CPU usage profiler

    Disregarding VSync information in the Hierarchy view

Whenever we see a function called WaitForTargetFPS in the Hierarchy view, this means that our game is waiting for VSync. We do not need to investigate this function and can safely ignore it

    Disabling VSync

VSync cannot be disabled on all platforms: many (such as iOS) enforce its use. However, if we are developing for a platform that does not enforce VSync we can disable it altogether in our project while we profile.

  Rendering profiling

Put very simply, the central processing unit (CPU) is responsible for determining what must be drawn and the graphics processing unit (GPU) is responsible for drawing it.

  CPU bound: CPU taking too long to render a frame

  GPU bound: GPU taking too long to render a frame

    Identifying if our game is GPU bound

not all devices and drivers support this profiler

If the GPU time is excess of the CPU time, we have identified that our game is GPU bound at this point

If the GPU usage profiler is not available for our target hardware, we can still identify if our game is GPU bound

If the function Gfx.WaitForPresent is taking the longest in the CPU Usage profiler, this indicates that the CPU is waiting for the GPU. This means that our game is GPU bound at this point

    Identifying if our game is CPU bound

If the top function is a rendering function, the CPU profiler graph will highlight it as part of the Rendering display. If this is the case, this means that rendering-related operations are causing our game to perform poorly and our game is CPU bound at this point. 

  Garbage Collection profiling

If the function GC.Collect() appears and is taking up excessive CPU time, then we have identified a garbage collection problem with our game. 

  Physics profiling

  Solving physics problems

  Slow scripts 

  Solving slow script problems

  Other causes of performance problems

原文地址:https://www.cnblogs.com/revoid/p/12770946.html