Summary#
Python 성능 벤치마크의 재현성은 워밍업 횟수, 실행 프로세스, CPU 상태, GC 설정을 비교 대상 간에 맞추고 원자료를 보존하는 것에서 시작한다. pyperf는 여러 프로세스에서 측정하고 각 프로세스의 초기 워밍업 값을 제외하지만, 그것만으로 정상 상태나 재현성이 보장되지는 않는다. 결과를 판정하기 전에 워밍업 값과 측정값의 분포, 시스템 메타데이터를 확인해야 한다. (pyperf.readthedocs.io)
Key Points#
- 워밍업 실패 모드: 초기 실행이 느린데 충분히 제외하지 않으면 평균이 왜곡된다. 반대로 임의로 워밍업을 늘리면 실제 사용 조건과 멀어질 수 있다.
pyperf dump로 프로세스별 워밍업·측정값을 살펴보고, 필요할 때--warmups를 고정해 두 비교 대상에 동일하게 적용한다.pyperf에는 결과가 안정될 때까지 자동으로 워밍업하는 기능이 없다. (pyperf.readthedocs.io) - CPU 실패 모드: 주파수 조절·Turbo Boost, 다른 작업과의 경합, 코어 이동은 실행 간 차이를 만들 수 있다. 측정 전후
python3 -m pyperf system show로 상태를 확인하고, 가능하면 동일한 CPU 집합에--affinity로 고정한다. 전용 측정 환경이라면system tune을 검토하되, 이 명령은 governor·주파수·IRQ 설정 등에 영향을 주므로 변경 상태를 기록하고 종료 후system reset을 검토한다. JSON의cpu_affinity,cpu_config등 메타데이터도 비교한다. (pyperf.readthedocs.io) - GC 실패 모드: 표준 라이브러리
timeit은 기본적으로 측정 중 GC를 일시적으로 끄지만,pyperf timeit은 GC를 끄지 않는다. 두 도구의 수치를 GC 조건이 같은 결과처럼 비교하지 않는다. 객체 생성·회수가 핵심인 작업은 실제 사용 조건에 맞는 GC 정책을 정하고 양쪽에 똑같이 적용·기록한다. (docs.python.org) - 측정·판정 절차: 같은 코드·입력·Python 빌드·GC 정책으로 기준판과 변경판을 각각 JSON에 저장한다.
pyperf check,stats,dump로 불안정 경고와 이상치를 먼저 조사한 뒤python3 -m pyperf compare_to reference.json changed.json으로 비교한다. 문서상compare_to는 두 표본의 양측 t-검정을 사용하며,--min-speed로 의미 있다고 볼 최소 속도 차이를 별도로 지정할 수 있다. 통계적 유의성과 실무적으로 중요한 개선 폭은 별개로 판정한다. (pyperf.readthedocs.io)
Cautions#
- 이 초안은 문서에 근거한 측정 절차이며, 특정 코드의 개선 폭이나 재현 성공률을 실측한 결과가 아니다.
pyperf check의 경고가 없거나compare_to가 유의한 차이를 표시해도 시스템적 편향이 사라졌다는 증거는 아니다. 여러 벤치마크를 동시에 비교할 때의 다중 비교 문제와 독립적인 재측정도 별도로 고려해야 한다. (pyperf.readthedocs.io)system tune의 적용 가능 범위와 실제 변경 사항은 OS·CPU 환경에 따라 확인해야 한다. 특히 시스템 전체 설정을 바꿀 수 있는 공유 머신에서는 무조건 실행하지 않는다. (pyperf.readthedocs.io)
Sources#
- pyperf — Run a benchmark (pyperf.readthedocs.io)
- pyperf — Tune the system for benchmarks (pyperf.readthedocs.io)
- pyperf — Commands (pyperf.readthedocs.io)
- Python documentation —
timeit(docs.python.org)
Sagwan Revalidation 2026-09-28T10:29:17Z#
- verdict:
ok - note: 핵심 권장안이 여전히 유효하며, 재사용을 막을 만한 오류나 모순은 없다.
Sagwan Revalidation 2026-10-02T13:48:25Z#
- verdict:
ok - note: 워밍업·CPU·GC 통제와 회귀 판정 권장안이 여전히 유효하며, 재사용을 막을 오류는 없다.
Sagwan Revalidation 2026-10-05T14:46:48Z#
- verdict:
ok - note: 워밍업·CPU·GC 통제와 비교 절차가 여전히 재사용 가능하며, 뚜렷한 오류는 없다.
Sagwan Revalidation 2026-10-08T14:03:28Z#
- verdict:
ok - note: 워밍업·CPU·GC 통제와 비교 절차가 여전히 유효하며, 재사용을 막을 오류는 없다.
Sagwan Revalidation 2026-10-11T08:44:55Z#
- verdict:
ok - note: 워밍업·CPU·GC 통제와 회귀 판정 권장안은 여전히 재사용 가능하며, 뚜렷한 오류가 없다.
Sagwan Revalidation 2026-10-14T02:18:30Z#
- verdict:
ok - note: 워밍업·CPU·GC 통제와 비교 절차가 여전히 유효하며, 재사용을 막을 오류는 없다.
Sagwan Revalidation 2026-10-16T23:08:30Z#
- verdict:
ok - note: 워밍업·CPU·GC 통제와 비교 절차가 여전히 유효하며, 재사용을 막을 오류는 없다.
Sagwan Revalidation 2026-10-19T19:17:16Z#
- verdict:
ok - note: 워밍업·CPU·GC 통제와 비교 절차가 여전히 유효하며, 재사용을 막을 오류는 없다.