Como usar o Bencher para Acompanhar Benchmarks


A maneira mais fácil de acompanhar seus benchmarks é o subcomando CLI bencher run. Veja a visão geral do benchmarking para uma explicação mais detalhada. Este é um exemplo de um subcomando CLI bencher run para acompanhar benchmarks em uma branch de funcionalidade adequadamente nomeada feature-branch:

bencher run \
--project save-walter-white \
--token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJjbGllbnQiLCJleHAiOjE2NzQwNjA3NTAsImlhdCI6MTY3MTQ2ODc1MCwiaXNzIjoiYmVuY2hlci5kZXYiLCJzdWIiOiJzYXVsQGJldHRlcmNhbGxzYXVsLmNvbSIsIm9yZyI6bnVsbH0.CABcvWlPobAHs7wsdR6wX5p0R2jaCd7RmpsnMp5pwEc \
--adapter json \
--if-branch feature-branch \
--else-if-branch main \
--else-branch \
--testbed localhost \
--err \
"bencher mock"`
  1. O Projeto deve já existir. Defina a flag --project ou a variável de ambiente BENCHER_PROJECT para o slug do Projeto ou UUID. (ex: --project save-walter-white)
  2. O token da API já deve existir. Defina a flag --token ou a variável de ambiente BENCHER_API_TOKEN para o token da API. (ex: --token ...)
  3. Opcional: Defina a flag --adapter ou a variável de ambiente BENCHER_ADAPTER para o nome do adaptador desejado. Se isso não for definido, o Adaptador magic será usado. Veja adaptadores de suporte de benchmark para uma visão geral completa. (ex: --adapter json)
  4. Existem várias opções para definir a branch do projeto. Veja seleção de branch para uma visão geral completa.
    1. Use a branch atual se ela já existir. (ex: --if-branch feature-branch)
    2. Crie um clone dos dados da branch alvo se eles já existirem. (ex: --else-if-branch main)
    3. Caso contrário, crie uma nova branch com o nome fornecido para --if-branch, que seria feature-branch. (ex: --else-branch)
  5. Opcional: Defina a flag --testbed ou a variável de ambiente BENCHER_TESTBED para o slug do Testbed ou UUID. O Testbed já deve existir. Se isso não for definido, então o Testbed localhost padrão será usado. (ex: --testbed localhost)
  6. Defina o comando para falhar se um Alerta for gerado. Para que um Alerta seja gerado, um Threshold já deve existir. (ex: --err)
  7. Execute seus benchmarks e gere um Relatório a partir dos resultados. (ex: "bencher mock")

Benchmarking Relativo

Benchmarking relativo executa uma comparação lado a lado de dois commits. Isso pode ser útil ao lidar com ambientes CI/CD barulhentos, onde o recurso disponível pode variar muito entre execuções. Este é um exemplo de um subcomando CLI bencher run para executar benchmarking relativo em uma branch de funcionalidade adequadamente nomeada feature-branch:

git checkout feature-branch
export FEATURE_BRANCH=feature-branch-$(git rev-parse --short HEAD)
export BENCHER_API_TOKEN=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJjbGllbnQiLCJleHAiOjE2NzQwNjA3NTAsImlhdCI6MTY3MTQ2ODc1MCwiaXNzIjoiYmVuY2hlci5kZXYiLCJzdWIiOiJzYXVsQGJldHRlcmNhbGxzYXVsLmNvbSIsIm9yZyI6bnVsbH0.CABcvWlPobAHs7wsdR6wX5p0R2jaCd7RmpsnMp5pwEc
git checkout main
bencher run \
--project save-walter-white \
--if-branch "$FEATURE_BRANCH" \
--else-branch \
--testbed localhost \
--iter 3 \
"bencher mock"
git checkout feature-branch
bencher threshold create \
--project save-walter-white \
--branch "$FEATURE_BRANCH" \
--testbed localhost \
--measure latency \
--test t \
--upper-boundary 0.95
bencher run \
--project save-walter-white \
--branch "$FEATURE_BRANCH" \
--testbed localhost \
--iter 3 \
--fold min \
--err \
"bencher mock"
  1. Faça checkout na branch de funcionalidade. (ex: feature-branch)
  2. Crie uma variável de ambiente que seja o nome da branch de funcionalidade concatenado com o ID do commit git curto. Isso é importante! Garante que para cada execução uma nova branch é criada.
  3. Faça checkout na branch alvo. (ex: main)
  4. Execute bencher run para a branch alvo:
    1. A branch dada ainda não existirá. (ex: --if-branch "$FEATURE_BRANCH")
    2. Então será criada. (ex: --else-branch)
    3. Execute os benchmarks três vezes. (ex: --iter 3)
  5. Faça checkout na branch de funcionalidade. (ex: feature-branch)
  6. Crie um Threshold para a branch de funcionalidade:
    1. A Branch é a branch de funcionalidade com o ID do commit git adicionado. (ex: --branch "$FEATURE_BRANCH")
    2. O Testbed está sendo executado localmente. (ex: --testbed localhost)
    3. O Tipo de Métrica para os benchmarks é Latência. (ex: --measure latency)
    4. Existem menos de 30 métricas, use um teste t de Student. (ex: --test t)
    5. Defina um limite à direita de 95,0% porque uma Latência maior indica uma regressão de desempenho. (ex: --upper-boundary 0.95)
  7. Execute bencher run para a branch de funcionalidade:
    1. A Branch existirá pois acabou de ser criada. (ex: --branch "$FEATURE_BRANCH")
    2. Execute os testes três vezes. (ex: --iter 3)
    3. Dobre todas as três métricas para o valor mínimo. (ex: --fold min)
    4. Defina o comando para falhar se um Alerta for gerado pelo Threshold. (ex: --err)


🐰 Parabéns! Você aprendeu como usar o Bencher para acompanhar benchmarks! 🎉


Adicione o Bencher às Ações do GitHub ➡

Adicione o Bencher ao GitLab CI/CD ➡

🤖 Este documento foi gerado automaticamente pelo OpenAI GPT-4. Pode não ser preciso e pode conter erros. Se você encontrar algum erro, abra um problema no GitHub.