Vývojári Chromium zhrnuli prvé výsledky 8 rokov trvajúceho projektu RenderingNG, zameraného na neustálu prácu na zvyšovaní výkonu, spoľahlivosti a rozšíriteľnosti prehliadača Chrome.
Nap eksempel, optimalizácie pridané v vydaní Chrome 94 v porovnaní s Chrome 93 umožnili znížiť latenciu pri spracovaní stránok o 8 % a predĺžiť čas výdrže batérie o 0,5 %. Vzhľadom na veľkosť používateľskej základne Chrome sa tieto ukazovatele globálne prejavujú na úsporách viac než 1400 rokov procesorového času každý deň. V porovnaní s verziami z minulých rokov moderný Chrome vykresľuje grafiku rýchlejšie o viac než 150 % a je 6-krát menej náchylný na pády v GPU ovládačoch na problematickom hardvéri.
Medzi realizovanými metódami, ktoré prispievajú k nárastu výkonu, sa uvádza paralelizácia rasterizačných operácií rôznych pixelov na strane GPU a aktívnejšie rozmiestnenie spracovateľov na rôzne jadrá CPU (vykonávanie JavaScriptu, spracovanie posúvania stránky, dekódovanie videa a obrázkov, predbežné vykreslenie obsahu). Obmedzujúcim faktorom pri aktívnom paralelizovaní je nárast zaťaženia CPU, ktorý sa prejavuje zvýšením teploty a zvýšením spotreby energie, preto je dôležité dosiahnuť optimálnu rovnováhu medzi výkonom a spotrebou energie. Napríklad pri práci z batérie je možné obetovať rýchlosť vykresľovania, ale nie spracovanie posúvania v samostatnom vlákne, pretože zníženie odozvy rozhrania bude pre používateľa výrazné.
Technológie realizované v projekte RenderingNG úplne menia prístup k skladaniu a umožňujú adaptívne využívanie rôznych technológií optimalizácie výpočtov na GPU a CPU s ohľadom na jednotlivé časti stránok, pričom zohľadňujú také špecifiká ako rozlíšenie a frekvenciu obnovovania obrazovky, ako aj prítomnosť podpory pokročilých grafických API, ako sú Vulkan, D3D12 a Metal. Ako príklady optimalizácií sa uvádza aktívne využívanie cachovania textúr GPU a výsledkov vykreslenia častí webových stránok, ako aj zohľadnenie pri vykreslení len oblasti stránky viditeľnej používateľovi (nemá zmysel vykresľovať časti stránky zakryté iným obsahom).
Dôležitým prvkom RenderingNG je aj izolácia výkonu pri spracovaní rôznych častí stránok, napríklad pre izoláciu výpočtov súvisiacich s zobrazovaním reklamy v blokoch iframe, zobrazením animácií, prehrávaním zvuku a videa, rolovaním obsahu a vykonávaním JavaScriptu.

Realizované techniky optimalizácie:
- V Chrome 94 bol navrhnutý mechanizmus CompositeAfterPaint, ktorý zabezpečuje skladanie samostatne vykreslených častí webových stránok a umožňuje dynamicky prispôsobovať zaťaženie GPU. V súlade s údajmi získanými od používateľov v dôsledku zbierania telemetrie, aplikácia nového systému skladania umožnila znížiť oneskorenia pri rolovaní o 8 %, zvýšiť reakčnosť interakcie s používateľom o 3 %, zvýšiť rýchlosť vykreslenia o 3 %, znížiť spotrebu pamäte GPU o 3 % a predĺžiť čas prevádzky na batériu o 0.5 %.
- GPU Raster — mechanizmus rastrovania na strane GPU, bol zavedený pre všetky platformy v roku 2020 a umožnil urýchliť prechod testov MotionMark v priemere o 37 %, pričom kategórie súvisiace s HTML o 150 %. Tento rok bol GPU Raster doplnený možnosťou využitia zrýchlenia na strane GPU pre vykreslenie prvkov Canvas, čo viedlo k urýchleniu vykreslenia kontúr o 1000 %, a prechodu testov MotionMark 1.2 o 130 %.
- LayoutNG — kompletné prepracovanie algoritmov rozvrhnutia prvkov stránok zamerané na zvýšenie spoľahlivosti a predvídateľnosti. Projekt plánujú spustiť pre používateľov tento rok.
- BlinkNG — refaktorovanie a čistenie enginu Blink s oddelením procesov vykresľovania do samostatných fáz, aby sa zvýšila efektívnosť uloženia do cache a zjednodušila oneskorená kresba s prihliadnutím na viditeľnosť objektov v okne. Práce sa plánujú dokončiť tento rok.
- Presun do samostatných vlákien spracovateľov posúvania, animácie a dekódovania obrázkov. Projekt sa vyvíja od roku 2011 a tento rok dosiahol možnosť presunu animovaných CSS transformácií a animácií SVG do samostatných vlákien.
- VideoNG — efektívny a spoľahlivý engine na prehrávanie videa na webových stránkach. Tento rok bola implementovaná možnosť zobrazenia chráneného obsahu s rozlíšením 4K. Predtým bola pridaná podpora HDR.
- Viz — samostatné procesy pre rastrovanie (OOP-R — Out-of-process Raster) a vykresľovanie (OOP-D — Out of process display compositor), oddelujúce vykresľovanie používateľského rozhrania prehliadača od vykresľovania obsahu stránok. Projekt tiež vyvíja proces SkiaRenderer, využívajúci špecifické grafické API pre rôzne platformy (Vulkan, D3D12, Metal). Zmena umožnila znížiť počet havárií spôsobených problémami v grafických ovládačoch o 6-krát.
Zdroj: opennet.ru
