I have been working for a few years on a mobile platform program. I have spent more than a year optimizing as much as possible mobile gaming. Almost every one of my stitches uses the Mobile / Diffuse shader. When I test the performance of my game (on my phone) with the profiler, the frame rate remains clean at 60 fps for most. The CPU time varies between 16 ms and 17 ms. Rendering statistics are also excellent, with drawing calls ranging from 18 to 25, triangles between 1.0k and 2.0k, and vertices between 2.0k and 3.1k. Below is a screenshot of the Rendering Profiler when the game is working properly. I think for a mobile device, these numbers should be very good.
However, from time to time, I see a peak in the profiler window (see below):
According to the profiler, the peak is caused by Render.OpaqueGeometry.
In normal scenarios (when performance is fluid), Render.OpaqueGeometry takes between 1ms and 2ms of CPU time. However, as you can see in the screenshot above, Render.OpaqueGeometry takes 5.36 ms of CPU time and the total processor time is 24.16 ms.
According to my observations, this peak appears once or twice per minute. Sometimes, several minutes go by without any point. And on very rare occasions, the spike can appear 3 times in a minute (though I do not think it has happened the last two times I've tested it).
So, why do you think this happens even though the game is highly optimized? I've read in an article from Unity Answers that Render.OpaqueGeometry picks are common in all games and that there is nothing to worry about. But do you think 2 picks per minute are too common for a simple platform game?