Como rastrear tempos de compilação C++ em CI
 Everett Pompeii
Os tempos de compilação podem ser uma parte significativa do seu tempo de build, especialmente em C++. 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 tempos de compilação como um benchmark e monitorá-los no CI para identificar compilações lentas. A maneira mais fácil de implementar o Benchmarking Contínuo para tempos de compilação de C++ é usar o Bencher.
O que é o 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 
benchersimplesmente 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 C++ com o subcomando 
bencher runem seu fluxo de trabalho de CI usando a opção--build-timecom 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 C++ com o subcomando 
bencher runem seu fluxo de trabalho de CI usando a opção--build-timecom o adaptadorjsone configurando a opção--hostpara a URL da sua instância do Bencher Self-Hosted. 
⏱️ Build Time
O subcomando de CLI bencher run pode ser usado para rastrear o tempo de build (ou seja, tempo de compilação) dos seus entregáveis com a flag --build-time. Nos bastidores, bencher run produz os resultados como Bencher Metric Format (BMF) JSON. Portanto, é uma boa prática usar explicitamente o adaptador json. Para mais detalhes, veja como rastrear o tempo de build.
A Medida build-time (ou seja, segundos (s)) é coletada. Apenas o valor do tempo de build (ou seja, value) está disponível. Nem lower_value nem upper_value são coletados. A Medida build-time não é criada por padrão para todos os Projetos. No entanto, quando você usa a flag --build-time, esta Medida será criada automaticamente para o seu Projeto.
bencher run --build-time --adapter json "make build"Acompanhe seus benchmarks no CI
Alguma vez teve uma regressão de desempenho que afetou seus usuários? O Bencher poderia ter evitado que isso acontecesse com o benchmarking contínuo.