Stress-tested across realistic payload widths and rule coverage.

The benchmark corpus exercises nested events, lookups, windows, ONNX model signals, vector similarity, regex, geo, temporal rules, SQL-style expressions, and decision reduction across JSON, Arrow IPC, Avro, and Protobuf. Records/sec shows event evaluation rate; GiB/sec shows how much input volume the engine processed.

MEASURED RUNS252
RULE COVERAGE1,047
PAYLOAD RANGE2.2-15KB
PEAK ENGINE REC/S682,874

Format summary

Records/sec answers how many events the engine evaluated. GiB/sec normalizes for record width and is the better capacity number when comparing JSON and binary formats.

JSON / NDJSON0.80 GiB/s
Arrow IPC1.37 GiB/s
Avro0.65 GiB/s
Protobuf0.48 GiB/s
FormatOK runsMedian engine rec/sMax engine rec/sMedian throughputMax throughputMedian p95 batch latency
JSON / NDJSON96224,119628,8280.80 GiB/s3.02 GiB/s129.4 ms
Arrow IPC48330,209654,3221.37 GiB/s3.09 GiB/s39.9 ms
Avro54417,239665,9360.65 GiB/s2.89 GiB/s48.5 ms
Protobuf54427,206682,8740.48 GiB/s2.87 GiB/s46.4 ms

Payload-size scenarios

The requested 1KB and 2KB targets both resolved to about 2.3KB because the full corpus has a minimum realistic field footprint. Wider records expose the JSON parse/projection cost, while Arrow and typed formats hold up better.

Actual payloadFormatRunsMedian rec/sMax rec/sMedian throughputMedian p95
2.2KBJSON / NDJSON34344,426583,8680.74 GiB/s129.4 ms
2.2KBArrow IPC12430,870615,4541.34 GiB/s58.2 ms
2.2KBAvro12474,124635,5290.53 GiB/s56.4 ms
2.2KBProtobuf12431,523682,8740.33 GiB/s58.1 ms
2.2KBJSON / NDJSON25303,622628,8280.65 GiB/s153.5 ms
2.2KBArrow IPC12437,063654,3221.36 GiB/s63.2 ms
2.2KBAvro12477,995665,9360.53 GiB/s56.0 ms
2.2KBProtobuf12445,778653,0720.34 GiB/s60.7 ms
5.0KBJSON / NDJSON19213,201417,0861.03 GiB/s212.1 ms
5.0KBArrow IPC9281,187486,1191.13 GiB/s39.2 ms
5.0KBAvro12446,314639,2070.96 GiB/s64.1 ms
5.0KBProtobuf12442,200613,5090.84 GiB/s59.3 ms
10.1KBJSON / NDJSON9114,415263,4781.10 GiB/s108.4 ms
10.1KBArrow IPC9285,133482,6191.82 GiB/s39.4 ms
10.1KBAvro9231,530508,0480.94 GiB/s46.2 ms
10.1KBProtobuf9254,281496,8501.01 GiB/s46.2 ms
15.0KBJSON / NDJSON9105,571210,6111.51 GiB/s100.9 ms
15.0KBArrow IPC6245,694355,0252.14 GiB/s30.3 ms
15.0KBAvro9250,919486,4581.49 GiB/s42.5 ms
15.0KBProtobuf9294,319477,0551.77 GiB/s37.2 ms

Batch-size impact

Larger batches improve engine throughput by reducing per-call overhead, but they increase per-batch latency. This is the practical tradeoff for streaming deployments.

Batch rowsRunsMedian engine rec/sMedian throughputMedian p95 batch latency
2,04867127,8060.42 GiB/s24.3 ms
8,19267274,6270.85 GiB/s41.9 ms
32,76864447,6641.06 GiB/s86.4 ms
100,00040590,4171.00 GiB/s188.1 ms
1,000,00014459,4121.23 GiB/s1394.5 ms

Best observed engine runs by format

Best rows are useful for ceiling checks, not sizing promises. Use the median tables above for planning.

FormatActual payloadRecordsBatch rowsEngine rec/sInput throughputp95Rules fired
JSON / NDJSON2.2KB1,000,0001,000,000628,8281.35 GiB/s1590.3 ms1,047
Arrow IPC2.2KB100,000100,000654,3222.03 GiB/s152.8 ms1,047
Avro2.2KB500,000100,000665,9360.74 GiB/s163.7 ms1,047
Protobuf2.2KB500,000100,000682,8740.52 GiB/s154.9 ms1,047

15KB JSON stress rows

These are the wide JSON scenarios closest to the 15KB+ payload target. They show where parser and projection costs dominate and why batch size matters.

RecordsBatch rowsEngine rec/sInput throughputp95 batch latencyMax RSS
100,0002,04863,5380.91 GiB/s59.0 ms2.9GB
100,0008,192145,2332.08 GiB/s57.1 ms2.9GB
100,00032,768202,7172.90 GiB/s198.8 ms4.2GB
500,0002,04856,2300.81 GiB/s55.0 ms4.2GB
500,0008,192105,5711.51 GiB/s100.9 ms4.2GB
500,00032,768210,6113.02 GiB/s187.4 ms4.2GB
1,000,0002,04852,6840.75 GiB/s55.5 ms4.2GB
1,000,0008,19298,4021.41 GiB/s118.5 ms4.2GB
1,000,00032,768206,3562.96 GiB/s209.7 ms4.2GB

Run the same benchmark on your hardware.

The benchmark harness is intended for local capacity planning. Re-run it with your CPU, payloads, rules, and batch settings before making sizing decisions.