Speedometer 3.0

https://browserbench.org/Speedometer3.0/

Anunciando o Speedometer 3.0: Um Benchmark de Navegador Compartilhado para Capacidade de Resposta de Aplicativos Web

por colaboradores da Apple, Google, Microsoft e Mozilla
11 DE MARÇO DE 2024

Desde que a versão inicial do benchmark Speedometer foi lançada em 2014 pela equipe do WebKit, tornou-se uma ferramenta fundamental para os mecanismos de navegador impulsionarem otimizações de desempenho, à medida que usuários e desenvolvedores continuam a exigir experiências on-line mais ricas e suaves.

Estamos orgulhosos de lançar o Speedometer 3.0 hoje como um esforço colaborativo entre os três principais mecanismos de navegador: Blink, Gecko e WebKit. Como versões anteriores (Speedometer 2 em 2018 e Speedometer 1 em 2014), ele foi projetado para medir a capacidade de resposta do aplicativo Web simulando interações do usuário em páginas da Web reais. O lançamento de hoje do Speedometer 3.0 marca um grande passo à frente nos testes de desempenho do navegador da Web: ele introduz uma maneira melhor de medir o desempenho e um conjunto mais representativo de testes que refletem a Web moderna.

Um novo modelo de governança

Esta é a primeira vez que o benchmark Speedometer, ou qualquer benchmark de navegador principal, foi desenvolvido mediante uma colaboração intersetorial suportada por cada motor de navegador principal: Blink/V8, Gecko/SpiderMonkey e WebKit/JavaScriptCore. Ele foi desenvolvido sob um novo modelo de governança, impulsionado por consenso, e está hospedado em um repositório compartilhado que está aberto à contribuição. Essa nova estrutura envolve muito esforço coletivo: discussões, pesquisas, debates, decisões e centenas de PRs desde que anunciamos o projeto, em dezembro de 2022.

Uma gama mais ampla de experiências do usuário

O Speedometer 3 adiciona muitos novos testes. Começamos a projetar esse novo benchmark identificando alguns cenários-chave e interações do usuário que achamos importantes para os navegadores otimizarem.

Em particular, adicionamos novos testes que simulam gráficos de renderização de canvas e SVG (React Stockcharts, Chart.js, Perf Dashboard e Observable Plot), edição de código (CodeMirror), edição WYSIWYG (TipTap) e leitura de sites de notícias (Next.js e Nuxt.js).

Também melhoramos os testes do TodoMVC: atualizando o código para se adaptar às versões mais comuns dos frameworks mais populares com base nos dados do Arquivo HTTP. As seguintes estruturas e bibliotecas estão incluídas: Angular, Backbone, jQuery, Lit, Preact, React, React+Redux, Svelte e Vue; juntamente com implementações JavaScript vanilla visando ES5 e ES6, e uma versão de Web Components. Também introduzimos versões mais complexas desses testes, incorporadas em uma árvore DOM maior com muitas regras CSS complexas que emulam mais de perto o peso e a estrutura da página de webapps populares hoje.

Juntos, eles exercem uma seção transversal mais ampla e representativa do mecanismo, fornecendo novas oportunidades para otimizar as APIs JS, Layout, CSS, Graphics e DOM para melhorar a experiência do usuário na Web. Dê uma olhada em esta página para mais detalhes sobre os testes em si.

Melhorias no Test Runner

O próprio test runner no Speedometer 3 foi melhorado para medir mais do trabalho que o navegador faz em resposta às ações do usuário, como pintura e tarefas assíncronas. O Speedometer 2.0 mediu o tempo para executar um script de teste de forma síncrona como tempo de “sincronização”, bem como qualquer trabalho adicional antes que um temporizador de 0 segundo seja acionado como tempo “assíncrono”. No entanto, isso perdeu alguns mecanismos de navegador de trabalho têm que fazer para atualizar a renderização de uma página da Web.

No Speedometer 3.0, conseguimos medir esse trabalho de renderização anteriormente ausente, o que cria mais oportunidades de otimizar um conteúdo realista. Para fazer isso, medimos um script de teste em um retorno de chamada requestAnimationFrame como tempo de “sincronização” e um temporizador de 0 segundo agendado em um segundo requestAnimationFrame é acionado como tempo “assíncrono”. Esse tempo assíncrono é garantido para incluir o trabalho de temporizadores no próprio teste, bem como a renderização de página pelo mecanismo do navegador. Essas mudanças melhoram muito a precisão do benchmark e se traduzem em melhorias reais para os usuários, à medida que os mecanismos otimizam esse trabalho anteriormente ausente.

Há mais algumas melhorias nos bastidores também. Há ferramentas aprimoradas para desenvolvedores para que os engenheiros do navegador possam entender melhor os resultados, criar perfis e personalizar o teste. Redesenhamos a arquitetura do executor de teste para facilitar a gravação e a manutenção de casos de teste complexos. E há muitas melhorias de qualidade de código e migrações para recursos modernos que não estavam amplamente disponíveis quando o Speedometer 2.0 foi lançado, como promessas nativas, assíncrono / aguarda, classes e módulos.

Melhorando o desempenho da Web

O objetivo primário do Speedometer 3 é refletir a Web do mundo real tanto quanto possível, para que os usuários se beneficiem quando um navegador melhora sua pontuação no benchmark. Ele já teve algum sucesso nisso antes de ser lançado publicamente, com otimizações principais em cada mecanismo principal ao longo do ano passado se transformando em melhorias de capacidade de resposta para usuários em toda a Web.

Fonte:

2 curtidas