Como rastrear tamanhos de binários Rust em CI
Everett Pompeii
Os tamanhos de binários podem aumentar com o tempo, especialmente em Rust. Benchmarking Contínuo é a prática de executar benchmarks em cada conjunto de alterações para garantir que as mudanças não introduzam regressões de desempenho. Você pode tratar os tamanhos de binários como um benchmark e monitorá-los no CI para detectar grandes tamanhos de binários. A maneira mais fácil de implementar Benchmarking Contínuo para tamanhos de binário Rust é usar o Bencher.
O que é Bencher?
Bencher é um conjunto de ferramentas de benchmarking contínuas. Já teve algum impacto de regressão de desempenho nos seus usuários? Bencher poderia ter prevenido isso. Bencher permite que você detecte e previna regressões de desempenho antes que cheguem à produção.
- Execute: Execute seus benchmarks localmente ou no CI usando suas ferramentas de benchmarking favoritas. O CLI
bencher
simplesmente envolve seu harness de benchmark existente e armazena seus resultados. - Rastreie: Acompanhe os resultados de seus benchmarks ao longo do tempo. Monitore, consulte e faça gráficos dos resultados usando o console web do Bencher baseado na branch de origem, testbed e medida.
- Capture: Capture regressões de desempenho no CI. Bencher usa análises personalizáveis e de última geração para detectar regressões de desempenho antes que elas cheguem à produção.
Pelos mesmos motivos que os testes de unidade são executados no CI para prevenir regressões de funcionalidades, benchmarks deveriam ser executados no CI com o Bencher para prevenir regressões de desempenho. Bugs de desempenho são bugs!
Passos para o Bencher Cloud
- Crie uma conta no Bencher Cloud.
- Crie um token de API e adicione-o ao seu CI como um segredo.
- Crie um fluxo de trabalho para o seu CI, como GitHub Actions ou GitLab CI/CD.
- Instale o Bencher CLI no seu fluxo de trabalho CI.
-
Compile seu código Rust com o subcomando
bencher run
em seu fluxo de trabalho CI usando a opção--file-size
definida para o caminho de saída do seu binário juntamente com o adaptadorjson
.
Passos para Bencher Self-Hosted
- Crie uma instância Bencher Self-Hosted.
- Crie uma conta em sua instância Bencher Self-Hosted.
- Crie um token de API e adicione-o ao seu CI como um segredo.
- Crie um fluxo de trabalho para o seu CI, como GitHub Actions ou GitLab CI/CD.
- Instale o Bencher CLI no fluxo de trabalho do seu CI. Certifique-se de que a versão do CLI corresponda à versão da sua instância Bencher Self-Hosted.
-
Compile seu código Rust com o subcomando
bencher run
em seu fluxo de trabalho CI usando a opção--file-size
definida para o caminho de saída do seu binário juntamente com o adaptadorjson
e configurando a opção--host
para a URL de sua instância Bencher Self-Hosted.
⚖️ Tamanho do Arquivo
O subcomando CLI bencher run
pode ser utilizado para acompanhar o tamanho do arquivo (ou seja, tamanho do binário) de seus entregáveis com a opção --file-size
.
A opção --file-size
espera um caminho de arquivo para o arquivo cujo tamanho será medido.
Por baixo dos panos, bencher run
exibe os resultados comoFormato de Métrica Bencher (BMF) JSON.
Portanto, é uma boa prática utilizar explicitamente o adaptador json
.
Para mais detalhes, veja como acompanhar o tamanho do arquivo.
A Medida file-size
(ou seja, bytes (B)
) é coletada.
Apenas o valor do tamanho do arquivo (ou seja, valor
) está disponível.
Nem lower_value
nem upper_value
são coletados.
A Medida file-size
não é criada por padrão para todos os Projetos.
No entanto, quando você usa a opção --file-size
, essa Medida será automaticamente criada para o seu Projeto.
A opção --file-size
pode ser usada várias vezes para rastrear múltiplos tamanhos de arquivo.
Track your benchmarks in CI
Have you ever had a performance regression impact your users? Bencher could have prevented that from happening with continuous benchmarking.