Frametimes onder de loep: waarom FPS je kan misleiden

32 reacties
Inhoudsopgave
  1. 1. Inleiding
  2. 2. Frames of beelden per seconde
  3. 3. Van frames per seconde naar seconden per frame
  4. 4. De achilleshiel van het gemiddelde
  5. 5. Percentielen
  6. 6. Lage frame times, hoge percentielen
  7. 7. Tot slot
  8. 32 reacties

De achilleshiel van het gemiddelde

We meten voor frame times dus per frame de tijd die het kostte om dat frame te renderen. Aangezien elke benchmark al snel enkele minuten bedraagt, hebben we het over duizenden 'scores' (waarden). Het zou heel makkelijk zijn om uit al deze data weer een gemiddelde te berekenen, maar dan zijn we effectief geen stap verder dan bij een fps-score; een gemiddelde zegt immers erg weinig over de consistentie en de uitschieters binnen de reeks.

Frame # Frame time in milliseconden
1 9,2 ms
2 9,1 ms
3 15,8 ms
4 4,8 ms
5 7,5 ms
6 15,5 ms
7 4,3 ms
8 9,7 ms
9 22,2 ms
10 8,5 ms

Een (zeer) kort voorbeeld van een log van frame times. Met benchmarks van enkele minuten loopt het aantal gemeten frames al gauw richting de tienduizend.

Onderstaand (fictief) voorbeeld laat zien dat volledig afgaan op een gemiddelde verraderlijk kan zijn. Twee systemen worden met elkaar vergeleken, beide draaien hetzelfde spel op 30 fps. Systeem A lukt het om élk frame keurig in 33 ms af te leveren, wat dus 30 fps betekent. Systeem B lukt het om het gros van de frames in slechts 20 ms af te leveren. Maar twee frames duren significant langer: frame 8 kost 170 ms tijd, frame 18 zelfs 260 ms.

Welk systeem presteert nu beter? Kijken we naar de gemiddelden, dan komen beide systemen op 30 fps uit. Op basis daarvan zien we dus geen verschil. Kijken we naar de grafiek, dan is onmiddellijk duidelijk dat systeem B met zijn twee uitschieters lang niet zo'n vloeiende ervaring biedt als systeem A.

Nu we weten dat we ons niet blind moeten staren op een gemiddelde (fps), rijst de vraag: wat is dan wel te gebruiken? Als we in een benchmark of test de frame times meten, en daarmee tienduizenden scores verzamelen, hoe zijn die inzichtelijk te maken? Voor elke geteste seconde een grafiekje maken zoals hierboven is een hoop werk, en vermoedelijk haak je na tien stuks al af. Om dit op een compacte en efficiënte manier te doen, maken we gebruik van percentielen.

0
*