Bencher를 사용한 벤치마크 추적 방법


벤치마크를 추적하는 가장 쉬운 방법은 bencher run CLI 하위 명령어입니다. 더 깊은 이해를 위해 벤치마킹 개요를 참조하십시오. 다음은 feature-branch라는 적절한 이름의 기능 브랜치에서 벤치마크를 추적하기 위한 bencher run CLI 하위 명령어 예시입니다:

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. 프로젝트는 이미 존재해야 합니다. 프로젝트 slug나 UUID를 지정하기 위해 --project 플래그나 BENCHER_PROJECT 환경 변수를 설정하세요. (예: --project save-walter-white)
  2. API 토큰이 이미 존재해야 합니다. API 토큰을 지정하기 위해 --token 플래그나 BENCHER_API_TOKEN 환경 변수를 설정하세요. (예: --token ...)
  3. 선택사항: 원하는 어댑터 이름을 지정하기 위해 --adapter 플래그나 BENCHER_ADAPTER 환경 변수를 설정하세요. 이 항목이 설정되지 않으면 magic 어댑터가 사용됩니다. 벤치마크 하네스 어댑터들에 대한 전체 개요를 확인하세요. (예: --adapter json)
  4. 프로젝트 브랜치를 설정하는 데에는 몇 가지 옵션이 있습니다. 브랜치 선택에 대한 전체 개요를 확인하세요.
    1. 현재 브랜치를 사용하시면 이미 존재합니다. (예: --if-branch feature-branch)
    2. 타겟 브랜치의 데이터를 복제하면 이미 존재합니다. (예: --else-if-branch main)
    3. 그 외의 경우, --if-branch에 제공된 이름을 가진 새로운 브랜치를 생성합니다. 이 경우 feature-branch가 됩니다. (예: --else-branch)
  5. 선택사항: --testbed 플래그나 BENCHER_TESTBED 환경 변수를 Testbed slug나 UUID로 설정하세요. Testbed는 이미 존재해야 합니다. 이 항목이 설정되지 않으면 기본적으로 localhost Testbed가 사용됩니다. (예: --testbed localhost)
  6. 경고가 생성될 경우 명령이 실패하도록 설정하세요. 경고가 생성되기 위해서는 Threshold가 이미 존재해야 합니다. (예: --err)
  7. 벤치마크를 실행하고 결과로 보고서를 생성하세요. (예: "bencher mock")

상대 벤치마킹

상대 벤치마킹은 두 커밋의 나란한 비교를 실행합니다. 이는 리소스 사용 가능성이 실행 사이에 크게 변할 수 있는 노이즈가 많은 CI/CD 환경에서 유용할 수 있습니다. 다음은 feature-branch라는 적절한 이름의 기능 브랜치에서 상대 벤치마킹을 실행하기 위한 bencher run CLI 하위 명령어 예시입니다:

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. 피처 브랜치를 확인하세요. (예: feature-branch)
  2. 피처 브랜치 이름에 짧은 git 커밋 ID가 추가된 환경 변수를 생성하세요. 이것은 중요합니다! 각 실행 마다 새로운 브랜치가 생성되도록 보장합니다.
  3. 타겟 브랜치를 확인하세요. (예: main)
  4. 타겟 브랜치에 대해 bencher run을 실행합니다:
    1. 주어진 브랜치는 아직 존재하지 않을 것입니다. (예: --if-branch "$FEATURE_BRANCH")
    2. 그래서 이것은 생성될 것입니다. (예: --else-branch)
    3. 벤치마크를 세 번 실행하세요. (예: --iter 3)
  5. 피처 브랜치를 확인하세요. (예: feature-branch)
  6. 피처 브랜치에 대한 임계값을 생성합니다:
    1. 브랜치는 git 커밋 ID가 추가된 피처 브랜치입니다. (예: --branch "$FEATURE_BRANCH")
    2. 테스트베드는 로컬에서 실행되고 있습니다. (예: --testbed localhost)
    3. 벤치마크를 위한 측정은 대기시간입니다. (예: --measure latency)
    4. 30개 이하의 메트릭이 있을 경우, 학생의 t-검정을 사용하세요. (예: --test t)
    5. 더 큰 대기시간은 성능 저하를 나타내므로 오른쪽 경계를 95.0%로 설정하세요. (예: --upper-boundary 0.95)
  7. 피처 브랜치에 대해 bencher run을 실행합니다:
    1. 브랜치는 방금 생성되었으므로 존재할 것입니다. (예: --branch "$FEATURE_BRANCH")
    2. 테스트를 세 번 실행하세요. (예: --iter 3)
    3. 세 개의 메트릭을 모두 최소값으로 접어 넣으세요. (예: --fold min)
    4. 임계값에 의해 생성된 경고가 있으면 명령을 실패하도록 설정하세요. (예: --err)


🐰 축하합니다! 벤치마크 추적을 위해 Bencher 사용 방법을 배웠습니다! 🎉


GitHub Actions에 Bencher 추가하기 ➡

GitLab CI/CD에 Bencher 추가하기 ➡

🤖 이 문서는 OpenAI GPT-4에 의해 자동으로 생성되었습니다. 정확하지 않을 수도 있고 오류가 있을 수도 있습니다. 오류를 발견하면 GitHub에서 문제를 열어주세요.