• Competitor rules

    Please remember that any mention of competitors, hinting at competitors or offering to provide details of competitors will result in an account suspension. The full rules can be found under the 'Terms and Rules' link in the bottom right corner of your screen. Just don't mention competitors in any way, shape or form and you'll be OK.

Latency added by frame rate limiting

Associate
Joined
19 Jul 2015
Posts
589
In another thread, the topic of frame rate limiting came up, and whether FRTC or Chill was better. I didn't know, so I decided to do some Science™.

I connected the left button of a mouse and a photodiode to an oscilloscope, with the photodiode pointed at my monitor. With that, I can use the oscilloscope to measure the time between pressing the mouse button and the screen changing brightness. That's the total end-to-end latency, including anything added by any frame rate limiting.

To make the screen change brightness when the mouse button is pressed, the muzzle flash of a gun in a game is handy. I used the game Second Sun for this, as it has nice bright muzzle flashes, and I happen to have it installed now. It uses Unity as its engine, and DX11. I set it to 1080p with all the settings turned up to maximum (except no AA), which runs at 190 fps without any limiting in the particular location I stood in for testing.

This is what it looks like on the oscilloscope. The green trace is the mouse button, the blue trace is the muzzle flash, and the latency is conveniently calculated automatically and shown underneath:

second-sun-scope.png


I clicked the mouse button 200 times with no frame rate limiting, then again limited to 60 fps using the game's own limiter, FRTC, and Chill. Then I created a cumulative frequency chart of the latencies:

second-sun-cumulative.svg


"Cumulative frequency" means that a given point on the chart represents the proportion of clicks that were at that latency or quicker. So the median is exactly half way up the y axis, a line further to the left is lower latency, and a steeper line is more consistent latency.

The results aren't what I expected. I did expect "none" to be the fastest, because the frame rate is higher, and I expected the game's own limiter to be the best, but I didn't expect FRTC to be so much slower. It's possible that games using different graphics APIs would perform differently - I haven't tested that.
 
Last edited:
Today I realized that I missed an important one - vsync. For that I set my monitor to 60Hz (every other test was done at the monitor's native 165Hz), enabled vsync in the game settings, clicked some more, and...

second-sun-cumulative+vsync.svg


Note the change in horizontal scale to get it to fit.

While I had everything set up again, I clicked a thousand more times at a resolution of 4k, which looked like this:

second-sun-cumulative-2160.svg


Another unexpected result. How can a frame rate limited to 60 be faster than letting it run uncapped at ~98? Maybe something to do with FreeSync?

Anyway, the lesson is to use a game's built-in frame rate limiter if present, Chill otherwise, and definitely don't use Vsync.
 
Last edited:
Interesting, but could you tell the difference in a blind test? Does anybody really feel the difference? I'd put money on no, unless you're some twitchy freak of a professional gamer.

Try not to chase the numbers, it'll drive you mad.
 
Last edited:
Very interesting, I remember reading about a game (can't remember which) having better internal upscaling than FSR and apparently they're better at frame limiting too!
 
Interesting, but could you tell the difference in a blind test? Does anybody really feel the difference? I'd put money on no, unless you're some twitchy freak of a professional gamer.

Try not to chase the numbers, it'll drive you mad.
While I've never done a proper double-blind test, having played a lot of FPSes over the years I can confidently say yes. The ~30ms difference between the fastest and slowest methods of frame rate limiting can very much be the difference between accurately blowing someone's face off and completely missing.
 
Back
Top Bottom