Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 0 additions & 44 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -208,50 +208,6 @@ for tooling and interoperability. Imported source units are generated as
explicit roots into the same output tree. See the [complete examples](examples/README.md)
for each backend and the cross-language C++/Python workflow.

## Performance & footprint

Quarry includes a reproducible [benchmark suite and methodology](benchmarks/README.md)
covering telemetry, configuration, nested, large-payload, and small-message
stress workloads. The latest published baseline is from `main` commit
`04349e57` using five aggregated runs on a Linux/x86_64 GitHub-hosted runner
(AMD EPYC 7763), with a Release build, C++ 13.3.0, and Protobuf/protoc 3.21.12.

The representative measurements below are medians from that baseline. Throughput
is in operations per second; encoded sizes are bytes per record.

| Workload | Quarry C | Quarry C++ | Protobuf C++ | Protobuf Arena |
| --- | ---: | ---: | ---: | ---: |
| Telemetry encode | 9.69M | 1.17M | 18.81M | 10.38M |
| Telemetry decode | 5.45M | 3.55M | 13.48M | 12.18M |
| Large encode | 0.48M | 0.15M | 1.60M | 0.37M |
| Large decode | 0.85M | 0.21M | 0.57M | 0.45M |

| Workload | Quarry BRF | Protobuf |
| --- | ---: | ---: |
| Telemetry | 60 bytes/record | 16 bytes/record |
| Large | 1,661 bytes/record | 1,425 bytes/record |

BRF and Protobuf are different wire formats, so their encoded sizes are shown
separately and are not byte-compatible comparisons. Quarry C uses caller-owned
fixed-capacity buffers; Quarry C++ uses owning values; Protobuf C++ and Arena
use their respective owning and arena APIs. These ownership and allocation
models are intentional methodology differences, not a backend-quality ranking.

For the same run, the generated-source and benchmark-executable measurements
were: Quarry C `40,722`/`38,280` bytes, Quarry C++ `38,811`/`110,872` bytes,
and Protobuf C++/Arena `73,782`/`91,216` bytes. These are build measurements,
not universal application footprints; the reported native Quarry runtime size
is deterministic zero because it is header-only, while the Protobuf runtime is
external to this metric. Shared-runner timing is informational and depends on
hardware, compiler, optimization, runtime, and workload.

The complete raw data, normalized results, environment manifest, report, and
deterministic SVG charts are published by the [`Benchmarks` CI job](.github/workflows/ci.yml)
on `main` and manual workflow dispatch. The artifact is intentionally not a
permanent README link because GitHub Actions artifacts expire; use the
[benchmark documentation](benchmarks/README.md) to reproduce or obtain current
results.

### Embedded Cortex-M4F benchmark

Quarry is designed for resource-constrained embedded systems. The following
Expand Down
Loading