Is there any reason to limit my FPS?
Capping your framerate can have a few benefits:
- Decreased energy consumption
- Decreased heat production
- Decreased noise (cooling fans run slower)
Capping your framerate is especially beneficial to laptops or any other sort of mobile computers as it provides an excellent way to keep a laptop from eating its battery alive and also from burning a hole in your crotch.
Keep in mind that capping your framerate isn't the same as using v-sync.
Using a framerate cap will not provide a reduction in screen tearing. Framerate caps simply throttle a number of frames your video card can produce; they do not force the video card to wait until the monitor has begun a new refresh cycle.
If the framerate you are producing is around 55-75 fps then you might want to cap it a 50 or 60 as the spikes where it is 75 will feel like your game is slowing down when it goes back down to 55, this is just an example and your actual frames per second may vary.
Using v-sync conveys all the benefits listed about framerate caps above, with the added benefit of eliminating screen tearing; however, it does have the drawback of adding some latency.
Summary
Generating more frames than your monitor can display is a waste of energy; frame-tearing can only be eliminated by video-syncing, but it can be minimized by capping FPS at the monitor frequency. However, input-latency is a related consideration.
Detail
Drawing on my experience writing GUI systems, it seems to me that the following must be true.
Given two quantized systems, (a) image generation, and (b) image rendering, any disparity between the rates must on occasion result in tearing if they are not mutually excluded from occurring concurrently (by syncing the GPU and monitor), and any FPS in excess of the physical limits of the monitor is wasted. Ideally, an exact match in rate, offset by half the interval would minimize or eliminate tearing and waste no compute.
This is easily visualized, as follows, assuming 62.5 Hz monitor and whole milliseconds for simplicity:
Time (16'ms) : 0---------------1---------------2---------------3
Monitor Frames: x---------------x---------------x---------------x
GPU @ 62.5 FPS: x---------------x---------------x---------------x
GPU @ 62.5 FPS: --------x---------------x---------------x--------
GPU @ 125 FPS : x-------x-------x-------x-------x-------x-------x
GPU @ 125 FPS : ----x-------x-------x-------x-------x-------x----
GPU @ 90 FPS : x----------x----------x----------x-----------x---
GPU @ 90 FPS : ------x----------x----------x-----------x--------
Monitor Frames: x---------------x---------------x---------------x
Time (16'ms) : 0---------------1---------------2---------------3
As can be seen, if the monitor is 62.5 Hz, then the optimal frame rate is 62.5 FPS; at 90 FPS (which is actually one frame every 11.11' ms) we have a mismatch that will cause one lost frame about every third interval; at 125 FPS we have one frame lost every interval. If you never saw it, was the frame needed?
Thus, given a frame-rate constraint on the physical device, no rate greater than the monitor capability can be perceived since additional frames are simply never seen. From that it seems logical that capping FPS at the monitor refresh rate results in the maximal perceivable motion quality. Therefore it seems logical that generation of any frames over-and-above the monitor's refresh rate will simply waste electricity.
Given that you can't prevent tearing no matter what you do without monitor syncing, it's still much better to cap the frame rate and put that compute power into generating more detail per frame, and once that maximum is reached, just save the energy and reduce waste heat.
My two cents.
Visual Acuity
Playing into this, as well, even if you have a 144 Hz monitor is what you can actually perceive. Most data indicates that FPS matters only up to about 60 to 120 Hz, with conclusions that 90 Hz (FPS) for most people is the cut off for visually perceptible improvement. But every individual is unique, and regular gamers are among the most sensitive to motion artifacts because your visual system can be trained.
A nice article on the subject is http://www.pcgamer.com/how-many-frames-per-second-can-the-human-eye-really-see/
Input Latency
(Thanks to Atli for this comment.)
With all that said, it's worth pointing out here that capping FPS to the screen refresh can create noticeable input latency when gaming. IE: with the 16ms frame refresh, if the frame is rendered in 1ms immediately after the refresh, it'll have to sit there for 15ms waiting, effectively creating a 15ms lag between movement and display of that movement.
Games are also prone to limiting their AI/logic cycles to rendering cycles, creating lag there as well. Rendering at 3x the screen refresh will make this a lot less noticeable, as the frame that is shown will render closer to display time.
For such a use-case, capping at some appropriate multiple of the screen refresh rate can still be worthwhile with a modern GPU while keeping latency under some desired threshold.
There are several reasons to do this:
- Heat reduction
On less powerful video cards it can often be a good thing to limit the framerate of games so they don't overheat. It can also be used to limit power consumption if needed. - Screen tearing
If you experience moderate screen tearing (where the image shown on the screen becomes "fractured" due to camera movement) limiting the framerate is useful. V-Sync attempts this by holding the FPS at your monitor's refresh rate. Unfortunately V-Sync causes input lag, so this option is not always preferable. Technologies like G-Sync from Nvidia attempt to fix this. - Oscillation
People often find that if they experience a wide range of FPSs (from say 70-200) which oscillate backwards and forwards quickly that this can cause a "drag" effect where the variable framerate makes it seem like the game's speed is changing. This can be very distracting and/or affect aim, so people will cap the framerate. - Multiplayer stability
You'll find that in multiplayer games that if you have a steady framerate and steady network connection that means projectiles will synchronize better and hit detection will improve.
A common formula I see is fps cap = (refresh rate x 2) + 1
which for some technical reasons will more effectively prevent screen tear.