Chroomoptimalisatieresultaten geïmplementeerd door het RenderingNG-project

Chromium-ontwikkelaars hebben de eerste resultaten samengevat van het RenderingNG-project, dat acht jaar geleden werd gelanceerd, gericht op voortdurende werkzaamheden om de prestaties, betrouwbaarheid en uitbreidbaarheid van Chrome te verbeteren.

De optimalisaties die in Chrome 94 zijn toegevoegd in vergelijking met Chrome 93 resulteerden bijvoorbeeld in een vermindering van 8% in de latentie van paginaweergave en een toename van de batterijduur met 0.5%. Gebaseerd op de omvang van het gebruikersbestand van Chrome betekent dit een wereldwijde besparing van ruim 1400 jaar CPU-tijd per dag. Vergeleken met eerdere versies geeft moderne Chrome grafische afbeeldingen meer dan 150% sneller weer en is het zes keer minder gevoelig voor crashes van GPU-stuurprogramma's op problematische hardware.

Onder de geïmplementeerde methoden om prestatieverbeteringen te bereiken, merkten we de parallellisatie op van rasterisatiebewerkingen van verschillende pixels aan de GPU-kant en een actievere distributie van processors over verschillende CPU-kernen (het uitvoeren van JavaScript, het verwerken van pagina-scrollen, het decoderen van video's en afbeeldingen, het proactief weergeven van inhoud). De beperkende factor voor actieve parallellisatie is de toenemende belasting van de CPU, die wordt weerspiegeld door stijgende temperaturen en een hoger energieverbruik. Het is dus belangrijk om een ​​optimale balans tussen prestaties en energieverbruik te bereiken. Als u bijvoorbeeld op batterijvoeding werkt, kunt u de weergavesnelheid opofferen, maar u kunt de scrollverwerking in een afzonderlijke thread niet opofferen, omdat de afname van de interface-responsiviteit voor de gebruiker merkbaar zal zijn.

Technologieën die in het kader van het RenderingNG-project zijn geïmplementeerd, veranderen de aanpak van compositing volledig en stellen u in staat om adaptief verschillende technologieën te gebruiken voor het optimaliseren van berekeningen op de GPU en CPU in relatie tot individuele delen van pagina's, rekening houdend met functies als schermresolutie en vernieuwingsfrequentie , evenals de aanwezigheid in het ondersteuningssysteem voor geavanceerde grafische API's, zoals Vulkan, D3D12 en Metal. Voorbeelden van optimalisaties zijn onder meer het actieve gebruik van het cachen van GPU-texturen en het weergeven van resultaten van delen van webpagina's, evenals het rekening houden met alleen het gebied van de pagina dat zichtbaar is voor de gebruiker bij het weergeven (het heeft geen zin om delen van de pagina weer te geven). pagina die door andere inhoud wordt gedekt).

Een belangrijk element van RenderingNG is ook het isoleren van de prestaties bij het verwerken van verschillende delen van pagina's, bijvoorbeeld het isoleren van de berekeningen die gepaard gaan met het weergeven van advertenties in iframes, het weergeven van animaties, het afspelen van audio en video, het scrollen van inhoud en het uitvoeren van JavaScript.

Chroomoptimalisatieresultaten geïmplementeerd door het RenderingNG-project

Geïmplementeerde optimalisatietechnieken:

  • Chrome 94 biedt het CompositeAfterPaint-mechanisme, waarmee afzonderlijk weergegeven delen van webpagina's kunnen worden samengesteld en waarmee u de belasting van de GPU dynamisch kunt schalen. Volgens telemetriegegevens van gebruikers heeft het nieuwe compositiesysteem de scrolllatentie met 8% verminderd, de responsiviteit van de gebruikerservaring met 3% verhoogd, de weergavesnelheid met 3% verhoogd, het GPU-geheugenverbruik met 3% verminderd en de levensduur van de batterij met 0.5% verlengd.
  • GPU Raster, een rasterisatie-engine aan de GPU-zijde, werd in 2020 op alle platforms geïntroduceerd en heeft MotionMark-benchmarks met gemiddeld 37% en HTML-gerelateerde benchmarks met 150% versneld. Dit jaar is GPU Raster verbeterd met de mogelijkheid om GPU-versnelling te gebruiken om Canvas-elementen weer te geven, wat resulteert in 1000% snellere weergave van omtreklijnen en 1.2% snellere MotionMark 130-benchmarks.
  • LayoutNG is een compleet herontwerp van algoritmen voor de lay-out van pagina-elementen, gericht op het vergroten van de betrouwbaarheid en voorspelbaarheid. Het is de bedoeling dat het project dit jaar aan gebruikers wordt aangeboden.
  • BlinkNG - refactoring en opschoning van de Blink-engine, waarbij weergavebewerkingen worden verdeeld in afzonderlijk uitgevoerde fasen om de caching-efficiëntie te verbeteren en luie weergave te vereenvoudigen, rekening houdend met de zichtbaarheid van objecten in het venster. Het is de bedoeling dat de werkzaamheden dit jaar worden afgerond.
  • Verplaatsen van scroll-, animatie- en beelddecoderingshandlers naar afzonderlijke threads. Het project is in ontwikkeling sinds 2011 en dit jaar kreeg het de mogelijkheid om geanimeerde CSS-transformaties en SVG-animaties naar afzonderlijke threads te exporteren.
  • VideoNG is een efficiënte en betrouwbare engine voor het afspelen van video op webpagina's. Dit jaar is de mogelijkheid geïmplementeerd om beveiligde inhoud in 4K-resolutie weer te geven. HDR-ondersteuning was eerder toegevoegd.
  • Namelijk: afzonderlijke processen voor rastering (OOP-R - Out-of-process Raster) en weergave (OOP-D - Out-of-process display compositor), waarbij de weergave van de browserinterface wordt gescheiden van de weergave van pagina-inhoud. Het project ontwikkelt ook het SkiaRenderer-proces, dat gebruik maakt van platformspecifieke grafische API's (Vulkan, D3D12, Metal). De wijziging maakte het mogelijk om het aantal crashes als gevolg van problemen in grafische stuurprogramma's met zes keer te verminderen.

Bron: opennet.ru

Voeg een reactie