Статистический стенд регрессии производительности

Консольный стенд на нативном коде измеряет HotPDF на Win32 и Win64 и возвращает код ошибки процесса, если workload превышает свою версионированную отсечку

Запуск проверки

Tests\Performance\Run-HotPDFPerformance.bat

python tools\validate_performance_report.py ^
  Tests\Performance\Reports\performance-Win32.json ^
  Tests\Performance\Reports\performance-Win64.json

Bat-файл собирает release-раннеры, выполняет три прогрева и по 30 измеренных выборок на каждый workload, применяет Tests\Performance\thresholds.json и пишет по одному отчёту на платформу в Tests\Performance\Reports

Запускайте проверку изолированно на машине, свободной от другой нагрузки: конкуренция за планировщик и посторонний I/O процессов намеренно попадают в измерения

Workloads

У фикстуры зафиксированы байты PDF и SHA-256-идентичность, поэтому изменение входных данных не сможет молча переиспользовать старые пороги

Схема отчёта

hotpdf.performance.v1 записывает версии продукта и стенда, UTC-метку времени, состояние тёплого кеша, окружение, идентичность фикстуры, сырые выборки, сводные данные, применённые пороги, сбои и общий статус прохождения

Каждая сводка содержит минимум, p50 и p95 по методу nearest-rank, максимум, среднее арифметическое, выборочную дисперсию с N-1, стандартное отклонение, наблюдаемый и пиковый RSS процесса, максимальный положительный рост working set, а также суммарные read, write и прочий process I/O

Валидатор независимо пересчитывает временные статистики, RSS, суммы I/O, решения по порогам и общий статус прохождения из сырых выборок

Опции раннера и коды выхода

HotPDFPerformanceRunner.exe \
  --output=report.json \
  --thresholds=thresholds.json \
  --warmup=3 \
  --samples=30

--samples не может быть меньше 30, а --warmup — меньше единицы

Сопровождение порогов

Держите отдельные потолки для Win32 и Win64 по p50, p95, наблюдаемому RSS, росту working set, байтам чтения и байтам записи

Пересматривайте порог только после разбора сырых выборок, состояния машины, идентичности фикстуры, замысла реализации и повторных изолированных прогонов на обеих платформах

См. также: Scalable and Random-Access PDF Loading, Span-Based Simple-Object Parsing, Rendering Diagnostics and Operation Telemetry