We meten voor frametimes dus per frame de tijd die het kostte om hem 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.
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 33ms af te leveren, wat dus 30 fps betekent. Systeem B lukt het om het gros van de frames in slechts 20ms af te leveren. Maar bij drie frames duurt het significant langer: frame 8 kost 180ms, frame 18 kost 120ms en frame 25 kost ook nog 150ms. Welk systeem presteert nu beter? Kijken we naar de gemiddelden, dan komen beide systemen op dertig beelden in een seconde uit: 30 fps. Op basis daarvan zien we geen verschil. Kijken we naar de grafiek, dan is onmiddellijk duidelijk dat systeem B met zijn drie uitschieters lang niet zo'n vloeiende ervaring biedt als systeem A.
In bovenstaand theoretisch voorbeeld zijn de verschillen tussen de twee systemen nog duidelijk zichtbaar. Lastiger wordt het als we opnieuw een seconde aan frametimes in dezelfde grafiek zetten, maar dan met data zoals die er in de praktijk ongeveer uitziet:
Percentielen
Frametimes geven dus meer inzicht in gamingprestaties dan fps-scores. Aangezien we per frame analyseren hoelang het duurde om hem gereed te maken, is er vervolgens wel een uitdaging om deze lijsten met tienduizenden scores per benchmark goed inzichtelijk te maken. Hiervoor gebruiken we percentielgrafieken. Een percentiel is een term uit de statistiek. Hij wordt in dit geval berekend door alle frametimes van laag naar hoog te ordenen en te verdelen in 100 delen van gelijke grootte. Gaat het bijvoorbeeld om het 60e percentiel, dan is 60 procent van alle frametimes gelijk aan óf kleiner dan dit getal, en 40 procent juist hoger. Blijkt uit een test dat het 90e percentiel 13,3ms bedraagt, dan is 90 procent van alle gemeten frames in 13,3ms of sneller gereed. Op die manier krijg je meer overzicht over de distributie van alle gerenderde frames.
Hieronder staat een soortgelijke grafiek als bovenaan, met opnieuw één seconde aan dezelfde testdata op twee systemen. Het gemiddelde van deze twee systemen is opnieuw niet zo interessant, beide halen namelijk een gemiddelde frametime van 33,3ms, wat 30 fps betekent. We krijgen een beter overzicht als we alle scores in de grafiek sorteren van laag naar hoog.
Met de oplopende frametimes in deze grafiek is het beeld al wat minder chaotisch dan in de vorige grafiek. In de ordening van laag naar hoog staan de beste (laagste) frametimes links, en de slechtste (die de vervelende stotters veroorzaken) rechts. Dit is ook hoe een percentielgrafiek werkt, alleen worden voor de horizontale as nu percentielen gebruikt. Ook wordt in plaats van een staafdiagram (de 'balkjes') een lijngrafiek gebruikt. Dan komt de grafiek er als volgt uit te zien:
We weten dat frametimes bij voorkeur zo laag mogelijk zijn, maar vooral dat we zo min mogelijk hoge frametimes willen zien. Dat klinkt als hetzelfde, maar er is wel een verschil. In bovenstaand voorbeeld draait het spel op 30 fps en laat de monitor 30 beelden per seconde zien, per frame is er dus 33,3 ms tijd om hem gereed te maken. In dat geval hebben de frames die in mínder tijd klaar zijn geen extra meerwaarde, ze worden niet eerder getoond. Wil je je spel zo snel mogelijk laten draaien, dan zijn lage frametimes wel wenselijk maar ook dan is eveneens de consistentie belangrijk voor de beste ervaring. De hogere frametimes die rechts in de grafiek staan, zijn de gevallen die de vloeiende ervaring verstoren. De hoogste frametimes zo laag mogelijk houden is daarmee het belangrijkst. Daarom richten we ons bij onze reviews voornamelijk op deze hogere percentielen.
Hoge percentielen wegen het zwaarst
Bij het bespreken van frametimes zijn het 95e, 99e en 99,9e percentiel veelgebruikte waarden. Met deze gegevens kunnen we een gedegen uitspraak doen over hoe goed een spel of benchmark draait voor het allergrootste deel van de tijd. Toch zijn we niet puur op zoek naar de allerslechtste frametime; een incidentele stotter is vrijwel onvermijdelijk en vaak ook niet volledig voorspelbaar. Wel willen we weten hoe consistent de ervaring over de gehele linie is, want dat kan het verschil zijn tussen een prettig vloeiend speelbare game en een stotterfestijn.
Het 99e en 99,9e percentiel wordt bij frametimes ook regelmatig aangeduid met 1% en 0.1% lows, wat dus effectief hetzelfde is (de 1 en 0,1 procent slechtste frametimes) - het rolt alleen wat makkelijker over de tong. Bovendien rekenen sommige publicaties de percentielen in frametimes weer om naar fps, om de informatie zo wat toegankelijker te maken. Veel lezers kunnen zich bij 75 fps meestal een betere voorstelling maken dan bij 13,3 ms. Op zich is die keuze begrijpelijk, maar daarbij dient wel in het achterhoofd te worden gehouden dat er 'in' 75 fps (een seconde met 75 frames) nog altijd een inconsistente opvolging van frames kan plaatsvinden. Dit hangt vooral af van welk percentiel het dan betreft: omgerekend 75 fps als 99e percentiel is veel consistenter dan als 90e percentiel.