Resultados de optimización de cromo implementados polo proxecto RenderingNG

Os desenvolvedores de Chromium resumiron os primeiros resultados do proxecto RenderingNG, lanzado hai 8 anos, dirixido a un traballo continuo para aumentar o rendemento, a fiabilidade e a extensibilidade de Chrome.

Por exemplo, as optimizacións engadidas en Chrome 94 en comparación con Chrome 93 provocaron unha redución do 8 % da latencia de renderización da páxina e un aumento do 0.5 % na duración da batería. Segundo o tamaño da base de usuarios de Chrome, isto supón un aforro global de máis de 1400 anos de tempo de CPU cada día. En comparación coas versións anteriores, o Chrome moderno renderiza os gráficos máis dun 150 % máis rápido e é 6 veces menos susceptible aos fallos do controlador da GPU en hardware problemático.

Entre os métodos implementados para lograr ganancias de rendemento, observamos a paralelización das operacións de rasterización de diferentes píxeles no lado da GPU e unha distribución máis activa dos procesadores en diferentes núcleos de CPU (executar JavaScript, procesar o desprazamento da páxina, descodificar vídeos e imaxes, renderización proactiva de contido). O factor limitante para a paralelización activa é a carga crecente na CPU, que se reflicte polo aumento das temperaturas e o aumento do consumo de enerxía, polo que é importante conseguir un equilibrio óptimo entre o rendemento e o consumo de enerxía. Por exemplo, cando funciona con batería, pode sacrificar a velocidade de renderizado, pero non pode sacrificar o procesamento de desprazamento nun fío separado, xa que a diminución da capacidade de resposta da interface será perceptible para o usuario.

As tecnoloxías implementadas no marco do proxecto RenderingNG cambian completamente o enfoque da composición e permítenche utilizar de forma adaptativa diferentes tecnoloxías para optimizar os cálculos na GPU e CPU en relación a partes individuais das páxinas, tendo en conta funcións como a resolución da pantalla e a taxa de actualización. , así como a presenza no sistema de soporte para API de gráficos avanzados, como Vulkan, D3D12 e Metal. Exemplos de optimizacións inclúen o uso activo de caché de texturas da GPU e os resultados de renderizado de partes das páxinas web, así como ter en conta só a área da páxina visible para o usuario ao renderizar (non ten sentido renderizar partes da páxina web). páxinas que están cubertas por outro contido).

Un elemento importante de RenderingNG tamén é illar o rendemento ao procesar diferentes partes das páxinas, por exemplo, para illar o cálculo asociado coa publicación de anuncios en iframes, a visualización de animacións, a reprodución de audio e vídeo, o desprazamento de contido e a execución de JavaScript.

Resultados de optimización de cromo implementados polo proxecto RenderingNG

Técnicas de optimización implementadas:

  • Chrome 94 ofrece o mecanismo CompositeAfterPaint, que permite a composición de partes renderizadas por separado das páxinas web e permítelle escalar dinámicamente a carga na GPU. Segundo os datos de telemetría do usuario, o novo sistema de composición reduciu a latencia de desprazamento nun 8 %, aumentou a capacidade de resposta da experiencia do usuario nun 3 %, aumentou a velocidade de renderizado nun 3 %, reduciu o consumo de memoria da GPU nun 3 % e prolongou a duración da batería nun 0.5 %.
  • GPU Raster, un motor de rasterización do lado da GPU, presentouse en todas as plataformas en 2020 e acelerou os benchmarks de MotionMark nunha media dun 37 % e os benchmarks relacionados con HTML nun 150 %. Este ano, GPU Raster mellorou coa capacidade de usar a aceleración do lado da GPU para renderizar os elementos de Canvas, o que resultou nunha representación de contornos 1000 % máis rápida e benchmarks de MotionMark 1.2 un 130 % máis rápidos.
  • LayoutNG é un redeseño completo dos algoritmos de deseño de elementos de páxina destinado a aumentar a fiabilidade e a previsibilidade. Está previsto que o proxecto se leve aos usuarios este ano.
  • BlinkNG: refactorización e limpeza do motor Blink, dividindo as operacións de renderizado en fases executadas por separado para mellorar a eficiencia do caché e simplificar a renderización perezosa, tendo en conta a visibilidade dos obxectos na xanela. Está previsto que os traballos rematen este ano.
  • Movendo os controladores de desprazamento, animación e decodificación de imaxes a fíos separados. O proxecto desenvólvese desde 2011 e este ano logrou a posibilidade de exportar transformacións CSS animadas e animacións SVG para separar fíos.
  • VideoNG é un motor eficiente e fiable para reproducir vídeos en páxinas web. Este ano, implementouse a capacidade de mostrar contido protexido en resolución 4K. Compatibilidade con HDR engadiuse previamente.
  • É dicir: procesos separados para rasterización (OOP-R - Raster fóra de proceso) e renderizado (OOP-D - Compositor de visualización fóra de proceso), separando a representación da interface do navegador da representación do contido da páxina. O proxecto tamén está a desenvolver o proceso SkiaRenderer, que utiliza API gráficas específicas da plataforma (Vulkan, D3D12, Metal). O cambio permitiu reducir 6 veces o número de fallos debido a problemas nos controladores de gráficos.

Fonte: opennet.ru

Engadir un comentario