cloudfront-logs 0.10.0

AWS CloudFront log line parser
# Benchmarks


This document tracks the current benchmark targets defined in `Cargo.toml`:

- `brwv` -> `benches/borrowed-real-world-validated.rs`
- `brwu` -> `benches/borrowed-real-world-unvalidated.rs`

## Benchmark environment


- Run date: `2026-02-13 13:43:07 +01:00`
- OS: `Microsoft Windows 11 Pro`
- CPU: `AMD Ryzen 9 7950X3D 16-Core Processor`
- RAM: `63.7 GiB`
- Toolchain: `rustc 1.93.1 (01f6ddf75 2026-02-11)`
- Cargo: `cargo 1.93.1 (083ac5135 2025-12-15)`

## Commands


```powershell
$env:RUSTFLAGS='-Ctarget-cpu=native'
cargo bench -q --all-features --bench brwv
cargo bench -q --all-features --bench brwu
```

## Results: `brwv` (validated parsers)


```txt
*** Comparing different parsers for AWS CloudFront logs ***

Parses lines and extracts a few fields, slightly unordered,
this should simulate close to real-world usages.
brwv                           fastest       │ slowest       │ median        │ mean          │ samples │ iters
├─ 00 ValidatedRawLogline                    │               │               │               │         │
Timer precision: 100 ns
│  ├─ Line A                   124.1 ns      │ 192.4 ns      │ 128.4 ns      │ 130.5 ns      │ 1000    │ 1000000
│  ├─ Line B                   126.7 ns      │ 163.3 ns      │ 130.9 ns      │ 131.5 ns      │ 1000    │ 1000000
│  ├─ Lines A+B                249.2 ns      │ 369 ns        │ 255.4 ns      │ 257.3 ns      │ 1000    │ 1000000
│  ╰─ Sample File              751.4 ns      │ 959.9 ns      │ 779.8 ns      │ 781.1 ns      │ 1000    │ 1000000
├─ 01 ValidatedSimpleLogline                 │               │               │               │         │
│  ├─ Line A                   168.4 ns      │ 221.2 ns      │ 174.3 ns      │ 174.9 ns      │ 1000    │ 1000000
│  ├─ Line B                   173.2 ns      │ 224.1 ns      │ 180 ns        │ 181.3 ns      │ 1000    │ 1000000
│  ├─ Lines A+B                337.1 ns      │ 398.2 ns      │ 351.2 ns      │ 351.9 ns      │ 1000    │ 1000000
│  ╰─ Sample File              1.046 µs      │ 1.153 µs      │ 1.091 µs      │ 1.092 µs      │ 1000    │ 1000000
├─ 02 ValidatedChronoLogline                 │               │               │               │         │
│  ├─ Line A                   290.1 ns      │ 338.7 ns      │ 300.9 ns      │ 301.9 ns      │ 1000    │ 1000000
│  ├─ Line B                   292.8 ns      │ 471.6 ns      │ 306.6 ns      │ 308.8 ns      │ 1000    │ 1000000
│  ├─ Lines A+B                589.1 ns      │ 705.4 ns      │ 615.4 ns      │ 616.1 ns      │ 1000    │ 1000000
│  ╰─ Sample File              1.766 µs      │ 3.009 µs      │ 1.868 µs      │ 1.866 µs      │ 1000    │ 1000000
├─ 03 ValidatedTimeLogline                   │               │               │               │         │
│  ├─ Line A                   224.4 ns      │ 341.4 ns      │ 229.4 ns      │ 231.7 ns      │ 1000    │ 1000000
│  ├─ Line B                   225.1 ns      │ 336.2 ns      │ 234.1 ns      │ 235.8 ns      │ 1000    │ 1000000
│  ├─ Lines A+B                445.4 ns      │ 849.2 ns      │ 465.9 ns      │ 473.4 ns      │ 1000    │ 1000000
│  ╰─ Sample File              1.351 µs      │ 1.628 µs      │ 1.437 µs      │ 1.436 µs      │ 1000    │ 1000000
╰─ 04 ValidatedParquetLogline                │               │               │               │         │
   ├─ Line A                   274.7 ns      │ 490.4 ns      │ 282.1 ns      │ 283.6 ns      │ 1000    │ 1000000
   ├─ Line B                   276.7 ns      │ 339 ns        │ 282.7 ns      │ 283.9 ns      │ 1000    │ 1000000
   ├─ Lines A+B                553.4 ns      │ 668.7 ns      │ 570.8 ns      │ 572.1 ns      │ 1000    │ 1000000
   ╰─ Sample File              1.622 µs      │ 3.32 µs       │ 1.722 µs      │ 1.743 µs      │ 1000    │ 1000000
```

## Results: `brwu` (unvalidated parsers)


```txt
*** Comparing different parsers for AWS CloudFront logs ***

Parses lines and extracts a few fields, slightly unordered,
this should simulate close to real-world usages.
Timer precision: 100 ns
brwu                             fastest       │ slowest       │ median        │ mean          │ samples │ iters
├─ 00 UnvalidatedRawLogline                    │               │               │               │         │
│  ├─ Line A                     119.5 ns      │ 187.4 ns      │ 122.7 ns      │ 126.8 ns      │ 1000    │ 1000000
│  ├─ Line B                     130.8 ns      │ 149.5 ns      │ 134.5 ns      │ 135 ns        │ 1000    │ 1000000
│  ├─ Lines A+B                  244.7 ns      │ 293.5 ns      │ 252.1 ns      │ 252.7 ns      │ 1000    │ 1000000
│  ╰─ Sample File (no comments)  707.5 ns      │ 793.8 ns      │ 734.9 ns      │ 734.6 ns      │ 1000    │ 1000000
├─ 01 UnvalidatedSimpleLogline                 │               │               │               │         │
│  ├─ Line A                     164.3 ns      │ 214.9 ns      │ 171.1 ns      │ 172.2 ns      │ 1000    │ 1000000
│  ├─ Line B                     164.2 ns      │ 224.2 ns      │ 171.9 ns      │ 172.8 ns      │ 1000    │ 1000000
│  ├─ Lines A+B                  318.6 ns      │ 378.3 ns      │ 333.2 ns      │ 334.2 ns      │ 1000    │ 1000000
│  ╰─ Sample File (no comments)  947.3 ns      │ 1.667 µs      │ 1.01 µs       │ 1.013 µs      │ 1000    │ 1000000
├─ 02 UnvalidatedChronoLogline                 │               │               │               │         │
│  ├─ Line A                     279.4 ns      │ 346.7 ns      │ 295.8 ns      │ 295.8 ns      │ 1000    │ 1000000
│  ├─ Line B                     295.1 ns      │ 358.7 ns      │ 305.3 ns      │ 306.5 ns      │ 1000    │ 1000000
│  ├─ Lines A+B                  575 ns        │ 947.9 ns      │ 603 ns        │ 604.1 ns      │ 1000    │ 1000000
│  ╰─ Sample File (no comments)  1.718 µs      │ 3.785 µs      │ 1.82 µs       │ 1.85 µs       │ 1000    │ 1000000
├─ 03 UnvalidatedTimeLogline                   │               │               │               │         │
│  ├─ Line A                     215.3 ns      │ 277.1 ns      │ 223.7 ns      │ 224.9 ns      │ 1000    │ 1000000
│  ├─ Line B                     216.7 ns      │ 284.4 ns      │ 225.3 ns      │ 226.4 ns      │ 1000    │ 1000000
│  ├─ Lines A+B                  415.5 ns      │ 579.4 ns      │ 442.2 ns      │ 442.2 ns      │ 1000    │ 1000000
│  ╰─ Sample File (no comments)  1.277 µs      │ 2.629 µs      │ 1.361 µs      │ 1.37 µs       │ 1000    │ 1000000
╰─ 04 UnvalidatedParquetLogline                │               │               │               │         │
   ├─ Line A                     267 ns        │ 467.6 ns      │ 275.2 ns      │ 279.6 ns      │ 1000    │ 1000000
   ├─ Line B                     261.2 ns      │ 379.8 ns      │ 273.9 ns      │ 275.1 ns      │ 1000    │ 1000000
   ├─ Lines A+B                  517.8 ns      │ 666.1 ns      │ 546.9 ns      │ 548.6 ns      │ 1000    │ 1000000
   ╰─ Sample File (no comments)  1.597 µs      │ 2.101 µs      │ 1.681 µs      │ 1.686 µs      │ 1000    │ 1000000
```

These numbers are synthetic and depend on hardware, toolchain version, and CPU frequency scaling.