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.

5.80M
peak direct Arrow IPC rec/s
2.89M
peak HTTP Arrow IPC rec/s
400
test combinations
6-504
rules per tier
668
measured runs
5
input formats
100B-10KB
requested payload range
1M-10M
large-run record counts

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 IPC330,0252,887,494606.2858MB
NDJSON240,2282,467,259791.5949MB
JSON array173,7202,563,311573.5959MB
HTTP does not currently accept Avro or Protobuf content types. Those formats are measured through the direct IO decoder path below.

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 IPC102302,3045,803,305501.89.8GB
NDJSON102149,750996,964419.71.2GB
JSON array7823,231271,586108.99.2GB
Avro13289,415613,500273.91.3GB
Protobuf13308,4351,012,041317.91.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.

Sustained 500-rule workloads generally landed near 150K-200K records/sec at million-row scale, depending on format, payload width, and signal mix.
HTTP Arrow IPC, 504 rules257,957 median rec/s
HTTP NDJSON, 504 rules213,652 median rec/s
HTTP JSON array, 504 rules160,682 median rec/s

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.

Data

Deterministic nested ecommerce records with flat, nested, array-heavy, and wide shapes.

Signals

Strings, regex, lookups, windows, SQL expressions, ONNX output, vector distance, and decisions.

Scale

50K through 10M records, requested payloads from 100 bytes through 10KB, six policy tiers.

Environment

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.

Performance guide