Monday, 18 May 2020

A closer look at frame times: why FPS can mislead you

In reviews about video cards , 3D chips and games you usually read a lot about frame times. Most people can still imagine the number of FPS, but what exactly are frame times? What do those numbers mean, the 'ms', what are percentiles and how do you interpret all this data?

The human brain quickly interprets successive images as movement. Showing images in quick succession gives our brain the illusion of an animation, while in fact you are still looking at a (large) series of images. Today, monitors, televisions and smartphones can display 60 or even more images per second.

These were certainly not the first devices that created the illusion of animation for people to display images in quick succession. The zootrope and fenakistiscope were popular animation devices in the first half of the 19th century. Since then, technological advancements have greatly increased the animation options and the number of images per second. For films, however, almost 24 frames per second are almost always used.

Frames or images per second

Those who are not completely new in the world of video card performance or benchmarks undoubtedly know the term FPS. Frames per second , the number of images your PC manages to render in a particular game or test. The more fps you get, the faster your computer is and the better the game in question runs - at least that is the general view.

Because although 24 frames per second is enough for most people to see an animation instead of single frames, almost everyone can distinguish between an animation of 24 and 48 frames per second; the latter appears much smoother and smoother in our brain. This does require that all images of the animation are followed at an equal interval. If suddenly one image is missing or is shown longer than other images, our brains are perfectly able to notice this deviation - after all, the illusion of (a smooth) animation is broken!
No time to waste

Fluent animation is of course required when making films or series, but it is also easy to realize. There is control over the end product that the viewers ultimately see through post-processing. This is a different story with games. On your PC or console, each individual image must be built up as quickly as possible, this cannot happen in advance, as with films, because as a player you have influence on what appears on your screen. Building any image should not take too long in games to keep the animation smooth. Whether in your game you look at a quiet empty plain or in a busy street full of objects, explosions and light effects; each image must be ready in time to make the experience of animation as pleasant as possible. That is important when gaming on a monitor or television, but when using VR glasses even more urgent so as not to get dizzy or nauseous.

In video games, the number of images per second (frames per second, abbreviated to fps) is often used as an indicator of how smoothly the game runs. But unlike movies and series, the number of frames per second in games is not a fixed and constant data at all. Naturally, this must be taken into account. It is precisely because of this unpredictability that it is important to put the animation under a magnifying glass: we have to look beyond the total number of images per second.

From frames per second to seconds per frameSo FPS is, as it were, a total score, the number of images per second. Since this does not say anything about the distribution of the images within that second, the fps score is unable to say anything about how smooth the experience actually is for the player.

It is therefore more interesting to look at the time it takes to render each frame (image). These are also known as frame times , and they are measured in milliseconds. A millisecond is one thousandth of a second and is often shortened to ms . Because the images follow each other very quickly in an animation, this unit makes more sense than noting 0.001 seconds.

If you want 60 fps without stutters at all times, no frame should take longer than 16.67 milliseconds to calculate and be displayed on your screen.For 30 fps, your system can take it easy; there is a whopping 33.3 milliseconds. If you want to get 100 fps, that's just 10 milliseconds - less than a third of the time!
The Achilles heel of the mean

For frame times we therefore measure per frame the time it took to render that frame. Since each benchmark quickly takes a few minutes, we are talking about thousands of 'scores' (values). It would be very easy to calculate an average from all this data, but then we are effectively no further than with an FPS score; after all, an average says very little about the consistency and outliers within the series.

Which system is performing better now? If we look at the averages, both systems arrive at 30 fps. On this basis, we therefore see no difference. If we look at the graph, it is immediately clear that system B with its two outliers does not offer such a smooth experience as system A.

Now that we know that we should not focus on an average (fps), the question arises: what can be used? If we measure the frame times in a benchmark or test, and thereby collect tens of thousands of scores, how can these be made transparent? Making a graph for each second tested as above is a lot of work, and you probably already quit after ten pieces. To do this in a compact and efficient way, we use percentiles.

A percentile is a term from the statistic, and is calculated by ordering all frame times from lowest to highest and dividing it into 100 parts of equal size. That way you will get a better overview of the distribution of all data. For example, if it is the 60th percentile, then 60 percent of all frame times is equal to or less than this number, and 40 percent higher. If a test shows that the 90th percentile is 13.3 ms, 90 percent of all measured frames are ready in 13.3 ms or faster.

Do you remember the previous graph ? Below are a similar chart with again one second of test data on two systems.

The average of these two systems is again not that interesting, because they both achieve an average frame time of 33.3 ms which means 30 fps. We get a better overview if we sort all scores in the chart from low to high as below.

With the increasing frame times in this graph, the picture is a bit less chaotic than the previous graph. In the order from low to high, the best (lowest) frame times are therefore on the left, and the worst (which cause the annoying stutters) on the right. This is also how a percentile graph works, only percentiles are used for the horizontal axis. A line graph is also used instead of a bar chart (the 'bars'). Then the graph will look like this:

We know that frame times are preferably as low as possible, but especially that we want to see as few high frame times as possible. That sounds like the same thing, but there is a difference. In the example above, the game runs at 30 fps and the monitor shows 30 images per second, so there is 33.3 ms time to prepare per frame. In that case, the frames that are ready in less time have no extra value, they are not shown before. If you want your game to run as fast as possible, low frame times are desirable, but even then consistency is also important for the best experience. The higher frame times on the right of the graph are the cases that disrupt the smooth experience.
Low frame times, high percentiles

When discussing frame times, the 95th, 99th and 99.9th percentile are commonly used values. Why? Because with this data, we can make a solid statement about how well a game or benchmark is running for most of the time. We are not just looking for the worst frame time, we want to know how consistent the experience is across the board. An incidental stutter is almost inevitable and often not fully predictable - and sometimes just a measurement error.

The 99th and 99.9th percentile is also regularly indicated with 1% and 0.1% lows at frame times , which is effectively the same (the 1 and 0.1 percent worst frame times) - it just rolls a bit easier. In addition, some publications convert the percentiles in frame times back to fps, in order to make the information more accessible. Many readers can usually imagine better at 75 fps than at 13.3 ms . In itself we understand that choice, but it should be kept in mind that 'in' 75 fps (a second with 75 frames) an inconsistent follow-up of frames can still take place. This mainly depends on which percentile it concerns: converted 75 fps as 99th percentile is much more consistent than as 90th percentile.

For those who examine frame times, a world of detailed information opens up. Compared to the frames per second measure, it is much more accurate to measure how smooth the animation is and how pleasant the gaming experience will be. Moreover, there are a variety of options for comparisons; not only determine what the better video card is, but also, for example, which processor is suitable for gaming, how much an overclocking on your cores or your memory makes, the difference between different driver versions and so on.

That the importance of frame times has been underlined with this article does not mean that the fps benchmark can be trashed. As long as frame times remain consistent, the proportions in relevant equations will remain the same

In this article we have talked about what exactly frame times mean, how they relate to fps, how the calculations are made, what the percentiles mean and how you can read and interpret all these test data. If you also want to get started and do these measurements on your own PC, programs such as OCAT and FrameView are good options for logging in, but especially CapFrameX is recommended to provide insight into the large amounts of data in an instant.

No comments:

Post a Comment