정직한 벤치마킹
Spec: ISO/IEC 25010 ISO/IEC 25010 Spec: ISO/IEC 17025 ISO/IEC 17025 Evidence: Benchmark-backed
한눈에 보기
섹션 제목: “한눈에 보기”방법론 없는 벤치마크 수치는 거의 아무것도 알려 주지 않습니다. “NextPDF는 문서를 N 밀리초에 렌더링한다”라는 말은 문서, 하드웨어, 실행 횟수, 분산을 모르면 아무것도 알려 주지 않습니다. 이 페이지에서는 NextPDF가 성능을 측정하는 방식, 헤드라인 수치 대신 게이트를 거친 신호를 보고하는 이유, 그리고 속도 수치를 싣지 않는 이유를 설명합니다.
이것이 중요한 이유
섹션 제목: “이것이 중요한 이유”성능 주장은 게시하기 가장 쉽고 조작하기도 가장 쉬운 수치입니다. 대개 의도치 않게 그렇게 됩니다. 유휴 상태의 노트북에서 한 번 워밍업한 실행, 열 번 시도 중 가장 빠른 실행, 핫 경로에서는 아무도 호출하지 않는 함수의 마이크로벤치마크: 이들은 모두 실제 수치를 만들어 내지만, 여러분의 워크로드에 대해서는 아무것도 예측하지 못합니다. Spec: ISO/IEC 25010 ISO/IEC 25010 은(는) 성능 효율성을 지정된 조건에서 시간 및 처리량 매개변수 이내로 기능을 수행하는 것으로 정의합니다(ISO/IEC 25010, §3.10). “지정된 조건에서”를 제거하면 그 수치는 더 이상 측정값이 아닙니다. 그저 의미 없는 숫자가 됩니다.
더 조용한 실패도 있습니다. 한때는 맞았던 수치입니다. 벤치마크 결과를 문서 본문에 붙여 넣는 순간 그 수치는 고정됩니다. 그동안 코드, 런타임, 하드웨어는 계속 변합니다. 오래된 “빠르다”라는 주장은 도움이 되지 않을 뿐만 아니라 틀린 말입니다. 더 문제는 조용히 틀렸다는 점입니다.
- 성능 수치는 방법론 없이는 무의미합니다: 입력, 환경, 실행 횟수, 워밍업 정책, 그리고 분포 폭이 포함됩니다.
- NextPDF는 반복 실행으로 측정하고, 워밍업 반복을 폐기하며, 단일 최상의 수치가 아니라 분포를 보고합니다.
- 회귀 탐지는 통계적입니다: 결과는 Welch t-검정으로 기준선과 비교해 판정하므로, 회귀로 간주되려면 변화가 통계적으로 유의하면서 동시에 문제가 될 만큼 충분히 커야 합니다.
- 불안정한 환경은 조용히 평균에 묻히지 않고 탐지되어 보고됩니다 — 실행 간 분산이 높으면 결과를 평균 속에 숨기지 않고 무효로 처리합니다.
- 성능은 고정된 헤드라인이 아니라 빌드와 함께 생성되는 살아 있는 신호로 게시됩니다 — 그렇기 때문에 이 페이지에는 어떤 밀리초 수치도 나타나지 않습니다.
NextPDF의 접근 방식
섹션 제목: “NextPDF의 접근 방식”엔진의 성능 게이트는 한 번의 시간 측정 실행이 아니라 통계적 검정입니다. 문서화된 방법론은 측정 대상 스위트를 여러 번 실행하고, 설정된 횟수의 워밍업 실행을 폐기하며, 소요 시간과 메모리 모두에 대해 평균, 표준 편차, 변동 계수를 계산합니다. 그런 다음 현재 결과를 커밋된 기준선과 비교합니다:
- Repeat Run the measured suite N times under fixed conditions.
- Discard warmup Drop the first W runs so cold-start noise is excluded.
- Summarise Compute mean, standard deviation, and coefficient of variation for duration and memory.
- Test vs baseline Welch's t-test (two-sample, unequal variance) against the committed baseline.
- Decide Significant AND effect over threshold → regression. Variance over threshold → unreliable, not a pass. Absolute ceiling breach → hard fail.
세 가지 특성이 이 방식을 정직하게 만듭니다. 첫째, 회귀에는 두 가지가 동시에 필요합니다: 통계적 유의성(그 차이가 노이즈일 가능성이 낮음) 그리고 임계값을 넘는 효과 크기(그 차이가 신경 쓸 만큼 충분히 큼)입니다. 작지만 실제로 존재하는 둔화는 거짓 경보를 일으키지 않습니다. 노이즈가 큰 데이터에서 큰 둔화가 나타나도 그냥 지나치지 않습니다. 둘째, 불안정성 자체가 하나의 판정입니다: 실행 간 변동이 한계를 초과하면 게이트는 환경을 신뢰할 수 없다고 보고합니다. 의미 없는 평균을 내고 이를 통과라고 부르지 않습니다. 셋째, 여전히 절대 상한선이 존재합니다 — 통계와 무관하게 빌드를 실패시키는 강한 상한선입니다. 이 때문에 “유의미한 회귀 없음”이 이미 너무 느린 결과를 결코 정당화할 수 없습니다.
이는 신뢰할 수 있는 지표라면 필요한, ISO/IEC 17025가 기술하는 측정 규율입니다: 사전에 정해진 조건에서 얻은 결과 — 단일 환경 내에서의 반복성(ISO/IEC 17025, §3.7)과 여러 환경에 걸친 재현성(ISO/IEC 17025, §3.5)입니다. NextPDF의 성능 수치는 오직 “이 방법, 이 기준선, 이 실행”으로서만 의미가 있습니다. 바로 그 때문에 그 수치는 여기 한 문장에 있는 것이 아니라 그 수치를 만들어 낸 빌드와 함께 존재합니다.
증거가 말하는 것
섹션 제목: “증거가 말하는 것”Evidence: Benchmark-backed 엔진의 벤치마크 게이트는 워밍업 폐기를 포함한 반복 측정, 평균 / 표준 편차 / 변동 계수 요약, 그리고 커밋된 기준선에 대한 2-표본 Welch t-검정을 구현하며, 통과 / 회귀 / 불안정 / 강한 상한선 판정을 명시적으로 산출합니다. 또한 성능 벤치마크는 전용으로 별도 실행 가능한 스위트와 PHPBench 하니스로도 존재합니다. 성능은 추정하지 않고 의도적으로 측정합니다.
Evidence: Standard-backed “지정된 조건에서”는 편집상의 신중함이 아닙니다. 그것이 바로 정의입니다. Spec: ISO/IEC 25010, §3.10 ISO/IEC 25010 §3.10 에서는 성능 효율성을 지정된 시간, 처리량, 자원 조건에 결부시킵니다. 조건이 없는 수치는 더 약한 측정값이 아닙니다. 그것은 측정값이 아닙니다.
Evidence: Standard-backed 반복성과 재현성 구도는 Spec: ISO/IEC 17025 ISO/IEC 17025 을(를) 따릅니다: 결과는 사전에 정해진 조건을 기준으로 할 때만 신뢰할 수 있으며, 동일 환경 반복성과 교차 환경 재현성을 구분합니다. 조건을 명시할 수 없는 벤치마크는 둘 중 무엇도 주장할 수 없습니다.
실용 예시
섹션 제목: “실용 예시”실무에서 “정직함”은 수치가 아니라 방법 명세의 형태로 나타납니다:
<?php
declare(strict_types=1);
// The gate is invoked with its conditions made explicit, e.g.://// php ci/scripts/benchmark-gate.php \// --runs=5 --warmup=1 --testsuite=Unit \// --baseline=<committed-baseline>//// It then reports, for duration AND memory:// - mean, standard deviation, coefficient of variation (the spread)// - Welch's t-test p-value and effect size vs the baseline// - a verdict: PASS | REGRESSION | UNSTABLE | hard-ceiling FAIL//// An honest performance statement is therefore shaped like:// "<suite>, <runs> runs (<warmup> warmup), <hardware/runtime>,// no statistically significant regression vs baseline <id>;// coefficient of variation within bound."//// It is NEVER shaped like:// "NextPDF is fast" — or a bare millisecond number with no method.벤치마크의 산출물은 재현 가능한 방법과 판정입니다. 원시 밀리초 값은 그 값을 다시 도출할 수 있게 만든 빌드에 속하며 — 다시 도출할 수 없는 문서로 옮겨 적지 않습니다.
흔한 오해
섹션 제목: “흔한 오해”첫 번째 오해는 벤치마크를 하나의 수치로 보는 것입니다. 벤치마크는 분포를 산출하는 절차입니다. 수치는 그 분포에서 뽑은 표본 하나에 불과합니다. 여러 실행 중 가장 좋은 것이나 워밍업된 한 번의 실행을 보고하는 것은 낙관적인 보고가 아닙니다. 다른 것(이상적 조건에서의 최고치)을 측정해 놓고 그것을 전형적인 성능으로 표시하는 것입니다.
두 번째 오해는 “통계적으로 유의미한 회귀 없음”이 “이전만큼 빠름, 보장됨”을 의미한다는 것입니다. 그것은 관측된 차이가 이 실행 횟수와 이 분산에서는 노이즈와 구별될 만큼 뚜렷하지 않다는 뜻입니다. 그것은 한정되고 조건적인 진술입니다. 바로 그 때문에 NextPDF는 절대 상한선을 독립적인 안전장치로 유지하며, 자기 자신이나 다른 대상에 대한 결과를 한정되지 않은 주장으로 압축하기를 거부합니다.
한계와 경계
섹션 제목: “한계와 경계”이 페이지는 NextPDF가 성능을 어떻게 측정하고 보고하는지를 기술합니다. 처리량, 지연 시간, 메모리 수치를 명시하지 않는 것은 의도적입니다. 이 수치들은 명시된 조건에서 지속적 통합 산출물로부터 생성되는 살아 있는 신호이며, 현재 값은 빌드와 함께 게시됩니다. 여기에 다시 적은 수치는 조건이 없고 오래된 값이 될 것입니다 — 바로 이 페이지가 반대하는 그 실패입니다. 인용할 안정적인 성능 상수가 없으므로, 아무것도 인용하지 않습니다. 규율 자체가 산출물입니다.
실행 횟수, 워밍업 정책, 임계값, 기준선은 엔진의 벤치마크 구성이 소유하며 엔진과 그 하드웨어와 함께 발전합니다. 이 설명과 조금이라도 어긋난다면 그 구성이 권위 있는 기준입니다. NextPDF는 다른 어떤 라이브러리와도 성능을 비교하지 않습니다 — 유리하든 불리하든 — 동일하고 명시된 조건 없는 비교는 이 페이지가 거부하려는 바로 그 한정되지 않은 주장이 되기 때문입니다.
관련 문서
섹션 제목: “관련 문서”- 골든 파일 테스트 — 비트 단위 / 구조적 / 의미적 프로파일을 포함해 출력 정확성에도 동일한 재현성 규율을 적용합니다.
- NextPDF 테스트 피라미드 — 성능 계층의 위치와, 그것이 모든 변경에 대해서가 아니라 옵트인인 이유를 설명합니다.
- 변이 테스트 설명 — NextPDF가 허영 지표가 아니라 게이트를 거친 신호를 보고하는 또 다른 곳입니다.
용어집
섹션 제목: “용어집”- 벤치마크 — 단일 수치가 아니라 명시된 조건에서 측정값의 분포를 산출하는 정의된 절차입니다.
- 워밍업 실행 — 콜드 스타트 효과(JIT, 캐시, 오토로드)가 측정 결과를 오염시키지 않도록 폐기되는 초기 반복입니다.
- 변동 계수 — 표준 편차를 평균으로 나눈 값으로, 실행이 신뢰할 만큼 안정적인지 판단하는 데 사용되는 단위가 없는 분포 폭 척도입니다.
- Welch t-검정 — 분산이 같지 않은 두 표본에 대한 통계 검정으로, 여기서는 결과가 노이즈를 넘어 기준선과 다른지를 판정하는 데 사용됩니다.
- 효과 크기 — 통계적 유의성과는 별개로 차이가 얼마나 큰지를 나타내며, NextPDF는 회귀를 선언하기 전에 두 가지를 모두 요구합니다.
- 반복성 / 재현성 — ISO/IEC 17025에 따라, 사전에 정해진 조건에서 단일 환경 내(반복성) 또는 여러 환경에 걸쳐(재현성) 결과가 일치하는 정도입니다.
- 절대 상한선 — 통계적 비교와 무관하게 빌드를 실패시키는 강한 상한선입니다.