# Certificate Size Scalability
Three representative sizes from the PKITS corpus (parse-only), including all seven
libraries:
| Small (914 B) | 476.20 ns | 1480.3 ns | 1985.8 ns | 3148.0 ns | 7917.4 ns | 14977 ns | 15715 ns |
| Medium (933 B) | 483.16 ns | 1508.3 ns | 2379.8 ns | 3496.5 ns | 8320.2 ns | 15581 ns | 15903 ns |
| Large (968 B) | 483.97 ns | 1629.0 ns | 2812.1 ns | 3866.9 ns | 8171.3 ns | 15503 ns | 16241 ns |
| **Growth** | **+2%** | **+10%** | **+42%** | **+23%** | **+3%** | **+4%** | **+3%** |
synta grows only 2% over a 6% certificate-size increase. x509-parser grows 42% over the
same range — nom parsers traverse content bytes proportionally, so more bytes in the
certificate body mean more decode work. x509-cert grows 23% for the same reason.
cryptography-x509 is mostly deferred so it grows only 10%, dominated by the overhead of
computing more DER byte offsets. NSS, rust-openssl, and ossl are dominated by fixed
C-library overhead (locking, arena allocation, FFI transitions) that dwarfs any content
growth at these sizes.
## Why synta Scales Flat
synta's parse-time work is bounded by the count of tag+length headers, not the byte length
of opaque fields. The large ML-DSA signature BIT STRING (2,420–4,627 bytes) and the
SubjectPublicKeyInfo are stored as zero-copy `BitStringRef<'a>` / `OctetStringRef<'a>`
borrowed slices — synta reads only their tag+length header, not their content.
This design means a 7 KB ML-DSA-87 certificate parses in the same ~463 ns as a 900 B
traditional certificate.
## Scalability Benchmark
```bash
cargo bench -p synta-bench --bench comparison --features bench-compare -- scalability
```
```
# Traditional certificates only
cargo bench -p synta-bench --bench comparison --features bench-compare -- synta_vs_x509_parser
# Post-quantum only
cargo bench -p synta-bench --bench comparison --features bench-compare -- post_quantum_comparison
```