Dezvoltatorii Chromium au prezentat primele rezultate ale proiectului RenderingNG, lansat acum 8 ani, care își propune să îmbunătățească constant performanța, fiabilitatea și scalabilitatea Chrome.
De exemplu, optimizările incluse în versiunea Chrome 94, comparativ cu Chrome 93, au permis reducerea întârzierilor de procesare a paginilor cu 8% și o creștere de 0,5% a timpului de funcționare pe baterie. Având în vedere dimensiunea bazei de utilizatori Chrome, aceste date se traduc la nivel global într-o economie de peste 1400 de ani de timp procesor zilnic. Comparativ cu versiunile anilor trecuți, Chrome-ul modern redă grafică de peste 150% mai rapid și este cu 6 ori mai puțin predispus la crize în driverele GPU pe echipamente problematice.
Printre metodele implementate pentru a obține un câștig de performanță se numără paralelizarea operațiunilor de rasterizare a pixelilor pe GPU și distribuirea mai activă a procesorilor pe diferite nuclee CPU (executarea JavaScript, procesarea derulării paginii, decodificarea videoclipurilor și imaginilor, previzualizarea conținutului). Un factor limitativ în paralelizarea activă este creșterea încărcării CPU, care se reflectă în creșterea temperaturii și consumului de energie, așa că este important să se obțină un echilibru optim între performanță și consumul de energie. De exemplu, când funcționează pe baterie, se poate sacrifica viteza de redare, dar nu și procesarea derulării într-un fir separat, deoarece scăderea receptivității interfeței va fi perceptibilă pentru utilizator.
Tehnologiile implementate în cadrul proiectului RenderingNG schimbă complet abordarea compozitării și permit utilizarea adaptivă a diferitelor tehnologii de optimizare a calculului pe GPU și CPU în legătură cu părțile individuale ale paginilor, având în vedere trăsături precum rezoluția și frecvența de actualizare a ecranului, precum și disponibilitatea suportului pentru API-uri grafice avansate, precum Vulkan, D3D12 și Metal. Exemple de optimizări includ utilizarea activă a caching-ului texturilor GPU și a rezultatelor de redare a părților paginilor web, precum și faptul că la redare este luată în considerare doar zona paginii vizibilă pentru utilizator (nu are sens să se efectueze redarea părților paginii acoperite de alte conținuturi).
Un element important al RenderingNG este și izolarea performanței în procesarea diferitelor părți ale paginilor, de exemplu, pentru a izola calculele legate de afișarea publicității în blocuri iframe, redarea animațiilor, sunetului și videoclipurilor, derularea conținutului și executarea JavaScript.

Tehnici de optimizare implementate:
- În Chrome 94, a fost propus un mecanism CompositeAfterPaint, care asigură compunerea părților de pagini web redimensionate separat și permite scalarea dinamică a sarcinii pe GPU. Conform datelor obținute de la utilizatori prin telemetrie, aplicarea noului sistem de compunere a redus întârzierile la derulare cu 8%, a crescut reacția interacțiunii utilizatorului cu 3%, a îmbunătățit viteza de redare cu 3%, a scăzut consumul de memorie GPU cu 3% și a prelungit durata de viață a bateriei cu 0,5%.
- GPU Raster — un mecanism de rasterizare pe partea GPU, a fost implementat pentru toate platformele în 2020 și a permis accelerarea trecerii testelor MotionMark în medie cu 37%, iar în categoriile legate de HTML cu 150%. În acest an, GPU Raster a fost îmbogățit cu capacitatea de a folosi accelerarea pe partea GPU pentru redarea elementelor Canvas, ceea ce a dus la o accelerare a redării contururilor cu 1000% și a trecerii testelor MotionMark 1.2 cu 130%.
- LayoutNG — o revizuire completă a algoritmilor de aranjare a elementelor pe pagini, vizând creșterea fiabilității și previzibilității. Proiectul este planificat să fie livrat utilizatorilor în acest an.
- BlinkNG — refactorizarea și curățarea motorului Blink cu separarea operațiunilor de redare în faze executate separat pentru a crește eficiența caching-ului și a simplifica redarea amânată ținând cont de vizibilitatea obiectelor în fereastră. Lucrările sunt planificate să fie finalizate în acest an.
- Separarea în fire distincte a manipulatoarelor de derulare, animație și decodare a imaginilor. Proiectul este în dezvoltare din 2011 și în acest an a atins capacitatea de a separa în fire distincte transformările CSS animate și animația SVG.
- VideoNG — un motor eficient și fiabil pentru redarea videoclipurilor pe pagini web. În acest an a fost implementată capacitatea de a afișa conținut protejat cu o rezoluție de 4K. Anterior, a fost adăugată suportul pentru HDR.
- Viz — procese separate pentru rasterizare (OOP-R — Out-of-process Raster) și redare (OOP-D — Out of process display compositor), care separă redarea interfeței browserului de redarea conținutului paginilor. Proiectul dezvoltă de asemenea procesul SkiaRenderer, utilizând API grafice specifice diferitelor platforme (Vulkan, D3D12, Metal). Această modificare a permis reducerea cu 6 ori a numărului de blocaje cauzate de probleme cu driverele grafice.
Sursa: opennet.ro
