Performance Monitor and User Preferences showing very different fps numbers

everlaster

Well-known member
Featured Contributor
Messages
652
Reactions
3,321
Points
93
Website
patreon.com
Twitter
everlasterVR
Patreon
everlaster
fps.png


I repeated the averages calculation (Reset Averages) multiple times to make sure it actually settled on 130 fps. Meanwhile the User Preferences was showing around 146 +/- a few fps. This was in a scene with 1 light, some furniture and 1 person atom.
 
I can confirm this visual bug (noticed it some time ago).

They only show correct fps on empty scene with 0 people, as soon as you load scene with 2 or more they go out of sync fast.
Sometimes user perf. shows ~20 more or they both show more then you actually have.
fps.jpg
Third party overlay can easily tell you actual fps (example:RTSS).


EDIT: also for me those cpu/crypt benchmarks show 10-20fps more, but gpu/hair show correct.
 
Last edited:
Just wanna expand upon my previous reply.

Actual issue is when you have Physics Rate set lower than you actual FPS.
Performance monitor still reports correct fps (about 95% of time), in some rare cases it reports more.

example: if you have 240fps capped (vsync or using third party cap) and Physics rate bellow that cap it is gonna report higher on UI.
You need to set rate at (or above) your FPS to report correctly,
also physics update cap has no effect on this bug (if you have 120fps and using 60rate with 2 update it still reports incorectly on UI)

Users shouldn't pay too much attention to that UI indicator, especially if physics rate is not set correctly.
fps1.jpg

fps2.jpg

fps3.jpg

fps4.jpg

fps5.jpg
 
I only look at the Perf. Monitor to check FPS.
Just easier with a key bound to it. So I can see whether my CPU struggling based on the Physics time.
Never noticed the difference between both FPS counters.
  • Performance Monitor FPS seem based on UnityEngine.Time.deltaTime. Correction - the code for the Performance Monitor can be found under MeshVR.PerfMon.cs which leads to the GlobalStopwatch Class which uses to System.Diagnostics.Stopwatch. I did add my own FPS counter to VAM and can say that relying Time.deltaTime will NOT work in VAM for an accurate FPS counter. The results will be different based physics settings.
  • User Preferences FPS seem based on MeshVR.FPS. Completely different timing code that updates every 500 ms.
If the difference between both implementations gets bigger with higher FPS - it could be timer precision related.

Most accurate FPS "prediction" would technically be 1 / frametime updated every frame.
But with that framerate text changing so fast - that's just hard to read for our slow pathetic human eyes. :ROFLMAO:
So it's slowed down and updated with an interval in the UI.
We then usually see an average FPS of a few 100 ms of frames.
And should it not be updated with a 1 second interval?
It is literally frames per second. But nobody implements it like that.
At this point one could get into an argument over what's the correct way to implement a stupid FPS counter.

Meh - I'd prefer to have a little frametime graph instead. To see how 'smooth' the framerate actually is. Can't see that with FPS counters.

Anyway - good to know about that :)
 
Last edited:
Back
Top Bottom