통계 성능 회귀 하니스
네이티브 콘솔 하니스는 Win32 및 Win64 모두에서 HotPDF를 측정하고, 워크로드가 버전 지정 임계값을 초과하면 실패 프로세스 상태를 반환합니다
게이트 실행
Tests\Performance\Run-HotPDFPerformance.bat
python tools\validate_performance_report.py ^
Tests\Performance\Reports\performance-Win32.json ^
Tests\Performance\Reports\performance-Win64.json
배치 파일은 릴리스 러너를 빌드하고, 워크로드당 3회 워밍업 후 30회 측정 샘플을 수행하고, Tests\Performance\thresholds.json을 적용하며, Tests\Performance\Reports 아래에 플랫폼별 보고서 하나를 씁니다
스케줄러 경합과 관련 없는 프로세스 I/O가 측정에 의도적으로 보이기 때문에, 유휴 머신에서 게이트를 격리 실행합니다
워크로드
- load는 결정적 4페이지 픽스처를 열고 페이지 지오메트리를 구체화합니다
- save는 공유 로드 문서를 새 파일로 직렬화하고 저장소로 플러시합니다
- render는 모든 픽스처 페이지를 72 DPI로 래스터화합니다
- extract는 모든 픽스처 페이지에서 텍스트를 추출하고 검증합니다
픽스처는 고정 PDF 바이트와 고정된 SHA-256 정체성을 가지므로, 입력 변경이 조용히 이전 임계값을 재사용할 수 없습니다
보고서 스키마
hotpdf.performance.v1은 제품 및 하니스 버전, UTC 타임스탬프, 웜 캐시 상태, 환경, 픽스처 정체성, 원시 샘플, 요약, 적용된 임계값, 실패 및 전체 통과 상태를 기록합니다
각 요약은 최소, 최근접 순위 p50 및 p95, 최대, 산술 평균, N-1 표본 분산, 표준 편차, 관측 및 프로세스 최대 RSS, 최대 양의 작업 집합 증가 및 총 읽기, 쓰기 및 기타 프로세스 I/O를 포함합니다
검증기는 원시 샘플에서 타이밍 통계, RSS, I/O 합계, 임계값 결정 및 집계 통과 상태를 독립적으로 재계산합니다
러너 옵션 및 종료 코드
HotPDFPerformanceRunner.exe \
--output=report.json \
--thresholds=thresholds.json \
--warmup=3 \
--samples=30
--samples는 30보다 낮을 수 없고 --warmup은 1보다 낮을 수 없습니다
- 종료 코드
0은 모든 워크로드가 통과함을 의미합니다 - 종료 코드
1은 구성, 픽스처, 파싱 또는 실행 실패를 의미합니다 - 종료 코드
2는 하나 이상의 성능 임계값이 실패함을 의미합니다
임계값 유지 관리
p50, p95, 관측 RSS, 작업 집합 증가, 읽기 바이트 및 쓰기 바이트에 대해 별도의 Win32 및 Win64 상한을 유지합니다
원시 샘플, 머신 조건, 픽스처 정체성, 구현 의도 및 두 플랫폼에서 반복된 격리 실행을 검토한 후에만 임계값을 개정합니다
추가 정보: 확장 가능 및 랜덤 액세스 PDF 로딩, 범위 기반 단순 객체 파싱, 렌더링 진단 및 작업 원격 측정