Measured across the formats and paths teams actually deploy.
The guarded matrix exercises nested ecommerce events, six rule coverage tiers, payloads through 10KB, malformed input, lookups, windows, regular expressions, model scoring, vector distance, and decision reduction on a local Apple Silicon system.
HTTP agent throughput
End-to-end HTTP rows include request handling, format decode, rule evaluation, and configured result construction. Peak rows use the six-rule checkout ceiling workload; medians span all rule tiers and payload widths.
| Format | Median rec/s | Peak rec/s | Median MiB/s | Max RSS |
|---|---|---|---|---|
| Arrow IPC | 330,025 | 2,887,494 | 606.2 | 858MB |
| NDJSON | 240,228 | 2,467,259 | 791.5 | 949MB |
| JSON array | 173,720 | 2,563,311 | 573.5 | 959MB |
Direct IO throughput
These rows isolate decoder and engine work without HTTP. Arrow IPC provides the highest ceiling because typed columns avoid JSON parsing and repeated scalar conversion.
| Format | Runs | Median rec/s | Peak rec/s | Median MiB/s | Max RSS |
|---|---|---|---|---|---|
| Arrow IPC | 102 | 302,304 | 5,803,305 | 501.8 | 9.8GB |
| NDJSON | 102 | 149,750 | 996,964 | 419.7 | 1.2GB |
| JSON array | 78 | 23,231 | 271,586 | 108.9 | 9.2GB |
| Avro | 13 | 289,415 | 613,500 | 273.9 | 1.3GB |
| Protobuf | 13 | 308,435 | 1,012,041 | 317.9 | 1.7GB |
Rule count changes the planning number.
A six-rule ceiling run answers how fast the transport and columnar path can move. A 504-rule run is the better capacity-planning reference for a broad production policy.
What changes as payloads get wider
JSON pays to parse bytes
NDJSON remains streamable, but wider nested records increase parsing and projection work even when only referenced fields become columns.
Arrow trades CPU for memory
Typed buffers lift the throughput ceiling, while large combined batches raise resident memory. Standard Arrow string and binary offsets also impose a practical per-column size limit.
Queues shape tail latency
The largest HTTP combinations produced p99 spikes when requests queued behind evaluation and output. Throughput and request latency must be capacity-planned together.
Benchmark method
Numbers are useful only with the workload attached. The matrix keeps format, payload, nesting, rule coverage, record count, and output path visible.
Deterministic nested ecommerce records with flat, nested, array-heavy, and wide shapes.
Strings, regex, lookups, windows, SQL expressions, ONNX output, vector distance, and decisions.
50K through 10M records, requested payloads from 100 bytes through 10KB, six policy tiers.
Local Apple Silicon arm64 Release build with the NEON backend. One run per combination.
Use the numbers as a capacity range, not a universal promise.
Hardware, output detail, model complexity, state locality, payload shape, and concurrent transport load all move the result.