Harness statistico per le regressioni di prestazioni
L'harness console nativo misura HotPDF sia su Win32 sia su Win64 e restituisce uno status di processo fallito quando un workload supera la sua soglia versionata
Eseguire il gate
Tests\Performance\Run-HotPDFPerformance.bat
python tools\validate_performance_report.py ^
Tests\Performance\Reports\performance-Win32.json ^
Tests\Performance\Reports\performance-Win64.json
Il file batch costruisce i runner release, esegue tre warmup seguiti da 30 campioni misurati per workload, applica Tests\Performance\thresholds.json e scrive un rapporto per piattaforma sotto Tests\Performance\Reports
Eseguire il gate in isolamento su una macchina per il resto inattiva, perché la contesa dello scheduler e l'I/O di processi non correlati sono volutamente visibili alle misure
Workload
- load apre il fixture deterministico di quattro pagine e materializza la geometria delle pagine
- save serializza il documento caricato condiviso su un file nuovo e lo scarica su storage
- render rasterizza ogni pagina del fixture a 72 DPI
- extract estrae e verifica il testo su ogni pagina del fixture
Il fixture ha byte PDF fissi e un'identità SHA-256 bloccata, così un cambio di input non può riusare in silenzio vecchie soglie
Schema del report
hotpdf.performance.v1 registra le versioni del prodotto e dell'harness, il timestamp UTC, lo stato della cache a caldo, l'ambiente, l'identità del fixture, i campioni raw, i riepiloghi, le soglie applicate, i fallimenti e lo stato complessivo di pass
Ogni riepilogo contiene minimo, p50 e p95 nearest-rank, massimo, media aritmetica, varianza campionaria N-1, deviazione standard, RSS osservato e di picco del processo, massima crescita positiva del working set e I/O totale di lettura, scrittura e altro del processo
Il validatore ricalcola indipendentemente le statistiche di tempo, l'RSS, i totali di I/O, le decisioni sulle soglie e lo stato complessivo di pass dai campioni raw
Opzioni del runner e codici di uscita
HotPDFPerformanceRunner.exe \
--output=report.json \
--thresholds=thresholds.json \
--warmup=3 \
--samples=30
--samples non può scendere sotto 30 e --warmup non può scendere sotto uno
- Il codice di uscita
0significa che ogni workload è passato - Il codice di uscita
1significa che configurazione, fixture, parsing o esecuzione sono falliti - Il codice di uscita
2significa che almeno una soglia di prestazioni è stata superata
Manutenzione delle soglie
Tenere tetti separati Win32 e Win64 per p50, p95, RSS osservato, crescita del working set, byte letti e byte scritti
Revisionare una soglia solo dopo aver esaminato i campioni raw, le condizioni della macchina, l'identità del fixture, le intenzioni implementative e più esecuzioni isolate ripetute su entrambe le piattaforme
Vedi anche: Caricamento PDF scalabile e ad accesso casuale, Parsing di oggetti semplici basato su span, Diagnostica del rendering e telemetria delle operazioni