Performance validation results
KillerPDF 1.8.2 through 1.8.4 release benchmarks#
Five measured open/save passes were recorded for each release. These are separate release sessions, not an alternating same-session comparison.
| Collection | Inputs | 1.8.2 median seconds | 1.8.3 median seconds | 1.8.4 median seconds |
|---|---|---|---|---|
| Public regression | 16,696 | 167.891 | 182.093 | 207.099 |
| Standards and color | 649 | 5.695 | 5.666 | 5.635 |
| Private stress | 29,599 | 512.967 | 523.400 | 556.740 |
Version 1.8.3 saved 1,485 additional files without losing any previously successful input. Version 1.8.4 reproduced every 1.8.3 outcome and diagnostic detail. All three releases recorded zero crashes and timeouts in the separate damaged-file safety collection. See the 1.8.2 release record and the reports and measured runs for 1.8.3 and 1.8.4.
The 1.8.4 regression median was 13.7% longer than the separately recorded 1.8.3 session, while standards was 0.5% shorter and stress was 6.4% longer. The 1.8.3 record used a framework-dependent payload and the official 1.8.4 portable release contains a self-contained .NET 10.0.11 payload. The two releases were not rerun in alternating passes, so the difference is not isolated to application code.
KillerPDF 1.8.1 compared with 1.8.0#
Benchmark date: 2026-08-29
KillerPDF 1.8.1 completed the shared 2,236-file batch-resave workload in a median 7.057 seconds, compared with 7.015 seconds for KillerPDF 1.8.0. The 0.6% throughput difference is within ordinary run-to-run variation and far below the 10% slowdown threshold that requires investigation.
This is a regression benchmark for KillerPDF's real batch-resave path. It is not a claim that one PDF engine will be faster for every document or workload.
Builds under test#
| Version | Build | SHA-256 |
|---|---|---|
| KillerPDF 1.8.0 | Installed final release | 3D3C53B66A165C9BD26F1DCC1679AF131E69FB0305FF84BB52F53412EA657FCF |
| KillerPDF 1.8.1 | Release candidate built from the current source | B80687668D9ADA6DF4E01D7772E909B90CA8DA9A4B4ACEAC37702AE5FF43F4E9 |
Both executables reported their expected product versions. The 1.8.1 candidate used the same installed-payload build shape as the official 1.8.0 application.
Test system#
| Component | Value |
|---|---|
| Operating system | Windows 11 Pro 10.0.26200 |
| CPU | AMD Ryzen 5 3600 6-Core Processor |
| Memory | 32 GB DDR4-3200 |
| Storage | 2 TB SPCC M.2 PCIe NVMe SSD |
Corpus#
The input was the same 2,236-file public conformance subset used for the 1.8.0 release benchmark. Keeping the input fixed makes the two runs directly comparable.
The shared input contains public veraPDF, Isartor, and TWG conformance files. The same input directory was supplied to both versions for every run.
Method#
- Verify that both executables report the intended final product versions.
- Verify the release asset hashes and count the input PDFs recursively.
- Give each version one unmeasured warmup run.
- Run each version five measured times.
- Alternate which version runs first to reduce ordering bias from caching, machine temperature, and background activity.
- Use a fresh output directory for every run.
- Record elapsed wall-clock time, successful output count, process exit code, and files processed per second.
- Compare the median of the five measured runs instead of selecting the best run.
Every measured run processed all 2,236 files and returned exit code 0.
Results#
| Version | Runs | Median time | Minimum | Maximum | Median files per second |
|---|---|---|---|---|---|
| KillerPDF 1.8.0 | 5 | 7.015 seconds | 6.916 seconds | 7.217 seconds | 318.73 |
| KillerPDF 1.8.1 | 5 | 7.057 seconds | 6.815 seconds | 7.326 seconds | 316.86 |
The raw measurements are preserved in
benchmarks/1.8.1/benchmark-results.csv,
with the calculated medians in
benchmarks/1.8.1/benchmark-summary.csv.
KillerPDF 1.8.0 compared with 1.7.5#
Benchmark date: 2026-08-28
KillerPDF 1.8.0 completed the shared 2,236-file batch-resave workload in a median 10.013 seconds, compared with 16.167 seconds for KillerPDF 1.7.5. That is a 38.1% reduction in elapsed time. Median throughput increased from 138.31 to 223.32 files per second.
Builds under test#
| Version | Build | SHA-256 |
|---|---|---|
| KillerPDF 1.7.5 | Official GitHub release executable | C53B34C5847ABE24228226656C00EFF5F76396D2BD8AD1BE8FDBAC56B153B136 |
| KillerPDF 1.8.0 | Installed final release | 3D3C53B66A165C9BD26F1DCC1679AF131E69FB0305FF84BB52F53412EA657FCF |
The downloaded 1.7.5 executable matched the digest published for the v1.7.5 GitHub release asset. Both executables reported their expected final product versions.
Corpus note#
KillerPDF 1.7.5 could not process the PDF 2.0 files in the full 2,907-file corpus, so those files were excluded from both runs to keep the comparison equivalent.
Results#
| Version | Runs | Median time | Minimum | Maximum | Median files per second |
|---|---|---|---|---|---|
| KillerPDF 1.7.5 | 5 | 16.167 seconds | 15.675 seconds | 16.687 seconds | 138.31 |
| KillerPDF 1.8.0 | 5 | 10.013 seconds | 9.451 seconds | 11.518 seconds | 223.32 |
The raw measurements are preserved in
benchmarks/1.8.0/benchmark-results.csv,
with the calculated medians in
benchmarks/1.8.0/benchmark-summary.csv.
Reproducing the benchmark#
Benchmark-Versions.ps1 runs the complete warmup,
alternating measurement, logging, cleanup, and summary process. Run it from
PowerShell with two KillerPDF executables and one shared input tree:
.\Benchmark-Versions.ps1 `
-BaselineExe 'C:\path\to\KillerPDF-previous.exe' `
-CandidateExe 'C:\path\to\KillerPDF-current.exe' `
-InputDirectory 'C:\path\to\shared-corpus' `
-OutputDirectory "$env:USERPROFILE\killerpdf-benchmark\measured" `
-Runs 5 `
-BaselineLabel 'KillerPDF previous' `
-CandidateLabel 'KillerPDF current'The output directory must be inside the current user's profile. The script creates
and removes only its own output-* run directories. It keeps the per-run logs,
benchmark-results.csv, and benchmark-summary.csv.
For a useful comparison, close other demanding applications, keep the machine on the same power plan, use the same corpus and storage device, and do not compare absolute numbers from different computers. The relative change between two builds measured in the same session is the result that matters.
Release baseline#
For each final release:
- Compare the previous official release with the proposed final build.
- Use the same machine, corpus, run count, and method.
- Save the raw CSV files under
validation/benchmarks/<version>/. - Add the new release result to this report.
- Investigate a median slowdown of 10% or more before release. A slowdown is not automatically a failure, but it must be understood and documented.