Podrobný test grafických karet aneb FPS není všechno | Kapitola 2
Seznam kapitol
Při měření výkonu grafických karet se jako hlavní kritérium bere průměrný počet vykreslených snímků za sekundu. Tento způsob srovnávání však není zcela přesný a o skutečné plynulosti her vypovídají ještě další veličiny. V článku celou problematiku objasníme a detailně proměříme výkon nVidie GeForce GTX 660 a AMD Radeonu HD 7870.
časový průběh fps
Pokud v analýze plynulosti her půjdeme až na „nejnižší úroveň,“ dostaneme se k tomu, jak rychle se vykreslují jednotlivé snímky v dané hře. Pokud nám k plynulém hraní stačí průměrných třicet snímků za sekundu, měl by se každý snímek vykreslit nejpozději 33 ms po vykreslení předchozího. Pokud se tedy budou snímky vykreslovat po řadě s prodlevami 30 - 31 - 29 - 33 - 32 - 30 - 28 - 35 - 30 ms, jde o ideální situaci. Hra se nám bude zdát naprosto plynulá.
Bohužel existují i situace, kdy grafický karta vykresluje snímky se značně variabilními prodlevami a velkými odchylkami. Příkladem může být průběh s prodlevami 20 - 40 - 30 - 60 - 15 - 5 - 30 - 50 - 40 ms. Pokud spočítáme průměrnou prodlevu, dostaneme se k výsledku 32 ms neboli 31 fps. Hra by se nám proto měla zdát stejně plynulá jako u předchozího průběhu. Ve skutečnosti tomu tak ale nebude a hra se bude silně trhat. Celý mnou uvedený průběh je totiž dlouhý pouhých 300 ms a pro lidské oko jsou jednotlivé rozdíly v prodlevách nepostřehnutelné. Hra se nám bude jevit jako kdyby celá běžela při latenci okolo 60 ms, tj. pouhých 17 snímků za sekundu!
Průměrný framerate za scénu dlouhou pouze třetinu sekundy je u obou průběhů shodně okolo 30 fps. Pokud bychom měli hodnot výrazně více, situace by byla stejná a sestavili bychom z nich časový průběh fps, vyjde z obou měření téměř jistě téměř identický graf. Jak už jsme přitom zdůvodnili, při reálném hraní bude rozdíl v plynulosti na první pohled jasně patrný i naprostému laikovi! Jinými slovy ani časové průběhy fps nejsou zcela věrohodné a mají své limity.
průběh frametimes k časovému průběhu
Řešením, jak měřit plynulost her, není sestavovat časové průběhy fps, ale přímo průběhy latencí. V nich se na osu x vynese číslo vykreslovaného snímku a na osu y latence, s jakou byl snímek vykreslen proti předchozímu. Příklad takového průběhu je uveden nad odstavcem. Je z něj dobře patrné, že ačkoliv je průměrná latence pouhých 27,4 ms a téměř po celou dobu testu se drtivá většina latencí drží pod hranicí 33 ms (30 fps), v praxi celý test naprosto plynulý rozhodně nebyl. Při renderování snímků 400-600 a 2400-2600 mělo velké množství snímků vysoké prodlevy přes 60 ms a framerate tak subjektivně padal až po 20 fps. Pokud se přitom podíváte na časový průběh fps výše, který byl z těchto frametimes sestaven, žádný takový propad v něm patrný není. To je další důkaz, že časový průběh fps není, co do plynulosti hry, zcela vypovídající veličinou.
Z průběhu latencí můžeme současně spočítat některé statistické hodnoty
Range (rozpětí) — rozdíl mezi nejvyšší a nejnižší naměřenou latencí
Average Latency (průměrný prodleva) — součet hodnot všech latencí a podíl jejich počtem, jde o převrácenou hodnotu k počtu průměrných fps
Variance (rozpty) — součet druhých mocnin rozdílů všech latencí od průměrné latence vydělený počtem latencí (Aplikace prochází všechna data a od jednotlivých hodnot latencí odečte průměrnou latenci. Výsledek je umocněn (získání kladného čísla). Součet druhých mocnin vydělený počtem dat udává rozptyl. Z důvodu umocnění je jednotka ms2)
Coefficinet of variation (variační koeficient) — podíl odmocniny z rozptylu s průměrnou latencí
(Hodnota udává, z kolika procent se směrodatná odchylka podílí na průměrné latenci. Čím vyšší procento, tím jsou hodnoty naměřených latencí vzdálenější od přímky ideální průměrné latence)
Další grafy odvozené z měření latencí
histogram latencí
Výsledky naměřených latencí se dají interpretovat různými způsoby. Vedle samotného průběhu je to histogram neboli graf, ve kterém jsou na ose x naneseny všechny naměřené latence a na ose y počet vygenerovaných snímků s danou latencí. Je žádoucí, aby bylo co nejvíce snímků vykresleno s latencí pod požadovanou plynulostí (například 33 ms pro 30 fps) a naopak snímky s vysokou latencí nebyly pokud možno žádné.
V modelové situaci je patrné, že při průměrné latenci 27,4 ms (36 fps) se drtivá většina snímků vygeneruje nejpozději s prodlevou 40 ms (25 fps). Existují ale i snímky, jejichž latence je 100 a více ms. Citlivé oko si tak jinými slovy při hraní v některých situacích všimne drobného trhání.
grafů časů nad
Dalším typem interpretace výsledků je grafické vyjádření time spent over neboli časů nad. Jak už bylo řečeno výše, pro dosažení například 30 fps je nutné, aby se všechny snímky vygenerovaly s prodlevou do 33 ms. Graf časů nad ukazuje, kolik času hra během testu strávila nad stanovenou hranicí. Pokud se například snímky generovaly s prodlevami 30 - 35 - 25 - 40 - 10 ms, bude čas nad 33ms latencí 9 ms. Analogicky jsou v grafu vyneseny hodnoty časů nad 16,7 ms (60 fps), 20 ms (50 fps), 40 ms (25 fps) a 50 ms (20 fps). V daném průběhu tedy mělo 5,8 % snímků delší prodlevu než 40 ms a 3 % snímků delší prodlevu než 50 ms.
průběh percentil
Posledním typem grafu obsaženým v testu je průběh percentil. Při výpočtu percentilu se jednotlivé latence seřadí od nejmenší po největší. Pokud by soubor obsahoval přesně 1000 hodnot, pak by 50. percentila byla na 500. pozici, 75. percentila na 750. pozici a 99. percentila na 990. pozici. Jinými slovy hodnota 75. percentily (v našem případě přibližně 33 ms) říká, že 75 % vygenerovaných snímků mělo prodlevu nižší než 33 ms, 95 % snímků mělo prodlevu nižší než 38 ms a 99 % snímků mělo prodlevu nižší než 68 ms.
Velký nárůst hodnot percentil nad 95 % je daný občasnými ústřely do extrémních latencí, které jsou patrné z průběhu latencí i z histogramu. Může se zdát, že 99. percentila nemá velkou vypovídající hodnotu, opak je ale pravdou. Při průměrném frameratu 30 fps má každý 99. snímek prodlevu větší než 68 ms. Jinými se každé tři sekundy bude generovat jeden snímek rychlostí menší než 15 fps. Při hraní proto bude mírné trhání znát.
V ideálním případě by měla být hodnota 99. percentily co nejmenší a mít co nejmenší rozdíl proti hodnotě průměrné latence. Rozdíl téměř 150 % jako v zobrazeném průběhu je skutečně velmi vysoký a značí, že v průběhu není vše v pořádku.