/ performance / benchmark arena

Measure the work. Publish the context.

A transparent index of NEXUS-Q performance evidence: local Android/Termux timings, historical PQC Arena comparisons and the latest accepted native-backend diagnostic. Each dataset keeps its own environment and limitations.

/ local baseline

Android / Termux measurements

Recorded in the repository benchmark index using cargo bench -p nexusq-core --bench crypto_baseline -- --nocapture. The run used 20 iterations for crypto operations and 3 for Vault operations on the project development device. These are local, environment-sensitive measurements, not a cross-platform ranking.

OperationMean per operation
ML-KEM-768 + X25519 keygen147,227 ns
ML-KEM-1024 + X25519 encaps500,573 ns
ML-KEM-1024 + X25519 decaps452,677 ns
ML-DSA-65 keygen858,969 ns
SLH-DSA-SHAKE-128f keygen13,131,888 ns
Ed25519 sign65,292 ns
Ed25519 verify195,365 ns
AES-256-GCM encrypt692 ns
AES-256-GCM decrypt704 ns
Vault open71,692 ns
Vault unlock301,479,513 ns
Identity key rotation67,795 ns

Vault unlock includes the configured password KDF and is expected to dominate the operation cost. Source: BENCHMARKS.md ↗.

/ official hosted CI · native backend

v4.1.0 production-path gate · 19 Oct 2026

The official hosted run compared the opt-in NEXUS-Q native backend with AWS-LC on an AMD EPYC 7763 runner. All nine ML-KEM / ML-DSA operations passed the unchanged 1.5× median-and-p95 gate. The chart shows median latency; shorter bars are faster.

Exact measurements · median and p95

OperationNEXUS-Q medianNEXUS-Q p95AWS-LC medianMedian ratiop95 ratioGate
ML-KEM-768 · Keygen12.90 µs13.38 µs12.33 µs1.046×1.041×Pass
ML-KEM-768 · Encaps12.94 µs13.00 µs12.75 µs1.015×1.013×Pass
ML-KEM-768 · Decaps15.38 µs15.44 µs15.43 µs0.997×0.994×Pass
ML-KEM-1024 · Keygen18.34 µs18.86 µs17.85 µs1.028×1.025×Pass
ML-KEM-1024 · Encaps18.66 µs18.76 µs18.56 µs1.005×0.985×Pass
ML-KEM-1024 · Decaps22.01 µs22.10 µs22.19 µs0.992×0.977×Pass
ML-DSA-65 · Keygen35.79 µs36.62 µs40.00 µs0.895×0.885×Pass
ML-DSA-65 · Sign83.22 µs235.40 µs96.57 µs0.862×0.846×Pass
ML-DSA-65 · Verify33.54 µs34.01 µs34.31 µs0.978×0.976×Pass

Three alternating rounds per implementation, pooled medians and nearest-rank p95, 3,000 samples per operation and implementation. One AMD EPYC 7763 hosted CI runner; results are environment-specific, not universal performance claims. Source: README · Benchmarks ↗ · official production-path gate ↗.

Scope: the native backend is experimental and opt-in. The default core, CLI, server and SDK production paths continue to use RustCrypto. Passing the performance gate is not a security audit, certification or end-to-end application benchmark.
/ historical arena baseline

PQC Arena v1 · hosted CI

The final Arena CI run on 2026-10-05 validated 57 normalized measurements from eight implementations on one x86_64 Linux CI environment, with 20 measurement iterations and 3 warmups. The table below is the recorded v1 optimization baseline; it is not a claim that NEXUS-Q is faster.

OperationNEXUS-QBest measured comparatorRatio
ML-KEM-768 keygen33.94 µsAWS-LC · 11.44 µs2.97×
ML-KEM-768 encaps27.97 µsAWS-LC · 12.11 µs2.31×
ML-KEM-768 decaps34.62 µsAWS-LC · 15.07 µs2.30×
ML-KEM-1024 keygen53.89 µsliboqs · 22.60 µs2.38×
ML-KEM-1024 encaps46.05 µsliboqs · 22.71 µs2.03×
ML-KEM-1024 decaps52.14 µsliboqs · 25.61 µs2.04×
ML-DSA-65 keygen168.69 µsAWS-LC · 44.21 µs3.82×
ML-DSA-65 sign600.73 µsAWS-LC · 134.75 µs4.46×
ML-DSA-65 verify101.20 µsCIRCL · 22.92 µs4.42×

Lower latency is better. The Arena reports operations separately and does not publish a composite winner. Comparators use pinned implementation revisions; only equivalent algorithm/parameter sets belong in a direct comparison.

/ latest accepted diagnostic

Native backend · 21 Oct 2026

The latest local x86-64 diagnostic used an Intel Core i3-N305 with the CPU governor set to powersave, and compared the opt-in native backend with the best eligible per-operation comparator using a matched AWS-LC RNG. Six of nine operations beat the comparator on both median and p95. Three modest gaps remain accepted and documented.

6 / 9

Below comparator

Six operations were at or below 1.00× on both median and p95 in this specific local run.

1.063× / 1.115×

ML-DSA-65 signing

Median / p95 ratio for the remaining accepted delta.

1.021× / 1.020×

ML-KEM-1024 keygen

Median / p95 ratio for the remaining accepted delta. ML-KEM-768 keygen was 1.015× / 1.013×.

Important: this is local diagnostic evidence, not a hosted release benchmark, universal speed claim or production-path result. The native backend remains experimental and opt-in; normal core, CLI and SDK paths default to RustCrypto.

Decision and full caveats: Issue #23 final gate audit ↗.

/ how to reproduce

Reproducibility checklist

Record the environment

CPU model and features, OS, target, compiler/toolchain, CPU governor, thermal state, and runner type.

Pin the implementation

Record source revision, dependency versions, comparator version and build flags. Keep native and default paths separate.

Describe the workload

Algorithm and parameter set, operation, input corpus, warmups, sample count, rounds and aggregation method.

Publish raw evidence

Keep normalized JSONL, schema validation, CI run link and report together. A planned adapter is not a measured result.

Start with Arena methodology ↗ and performance reports ↗.