I'm checking profiler performance of my game on an Android device. When I check CPU Usage I noticed that PlayerLoop is at 99.6% and the biggest percentage is consumed in Semaphore.WaitForSignal with 32.5% and the second is PlayerConnection.Poll with 27%.
Can someone explain if there is a way to improve this? Is the PlayerLoop at 99.6% "normal" or is too high?
Below screenshot results from Xiaomi MI 5 Android 8

Provided percent in the profiler is "How mutch this item, contributes to the current execute time" and not "How much CPU you are using.
What is interesting to you is time in milliseconds for the biggest items. And whether something is too much or too little depends on what framerate you want to achieve.
What is Player Loop
The Player loop is the total time your game took to render 1 frame. In there you can find, all your scripts, rendering, and other engine functions.
What is Semaphore.WaitForSignal
Your Graphics pipeline is waiting for something else to finish. Usually, it means rendering is taking a while to finish, and some other parts of the graphics pipeline can't proceed until rendering is complete.
Is Player loop 99.6% normal
Yes, it preferably should always be around 100% unless you are in the editor.
What is exactly 27ms in the player loop
Total time required to process and render one frame. To achieve 30fps in-game you need to have all frames below 33ms (1000ms/30fps)
You can find more information here: https://docs.unity3d.com/Manual/ProfilerCPU.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With