← Benchmarks

Benchmark results — x86_64-unknown-linux-gnu

← All hosts

Qualification: COMPLETE. 34/34 cells; 102/102 conformant samples; exact source ab1c9ef3e8b1d078c69ee170da2cd4e381760bf8; source tree clean.

Machine and method

12th Gen Intel(R) Core(TM) i7-1260P; 12 physical / 16 logical; 31.0 GiB; Linux (Ubuntu 22.04).

Release binaries run over loopback for 30 seconds per sample, three samples per cell. Endpoint scenarios cover all four initiator/responder pairings; relay scenarios cover both implementations behind the same fixed bidirectional wire driver. Default-policy rows preserve each implementation's normal TCP bitrate and MTU policy. The controlled 1 Gbps resource rows change only that interface policy, both for real endpoint transfers and for transported-resource switching; the tiny raw SINGLE relay scenario remains default-policy-only. Tables show median throughput and latency; memory is the maximum peak RSS. Energy is optional: it is metered processor energy minus a fresh idle baseline (macOS CPU Power; Linux RAPL package) and appears only when all three samples are positive. Packet/request energy is per delivery; resource energy is normalized per application MiB. Initiator/responder energy is the combined package measurement attributed by each role's CPU-time share. Relay-scenario package energy is explicitly whole-cell energy; only CPU and RSS are relay-isolated. A check means every sample satisfied the scenario's accounting rule.

At a glance

Bar chart of Prns median throughput as a multiple of RNS 1.4.2 (compiled) for each published scenario Bar chart of RNS 1.4.2 (compiled) peak memory as a multiple of Prns for each role and scenario
Chart data as a table
ScenarioPrnsReferencePrns / reference
Single-packet throughput25.3k/s3.5k/s7.19×
Link-message throughput50.8k/s3.8k/s13.40×
Request/response987/s569/s1.73×
Maximum resource segment186.30 MB/s55.64 MB/s3.35×
Maximum resource segment · 1 Gbps policy186.94 MB/s56.04 MB/s3.34×
64-segment resource stream289.56 MB/s50.24 MB/s5.76×
64-segment resource stream · 1 Gbps policy288.72 MB/s38.24 MB/s7.55×
Raw transport throughput167.05 MB/s8.09 MB/s20.65×
Transported resource throughput777.74 MB/s160.31 MB/s4.85×
Transported resource throughput · 1 Gbps policy691.07 MB/s146.45 MB/s4.72×
Scenario · rolePrns peak RSSReference peak RSSReference / Prns
Single-packet throughput · initiator5.5 MiB207.7 MiB37.76×
Single-packet throughput · responder34.8 MiB214.0 MiB6.16×
Link-message throughput · initiator5.9 MiB222.5 MiB37.88×
Link-message throughput · responder43.9 MiB216.9 MiB4.94×
Request/response · initiator7.6 MiB239.8 MiB31.45×
Request/response · responder36.0 MiB270.4 MiB7.52×
Maximum resource segment · initiator42.4 MiB345.6 MiB8.15×
Maximum resource segment · responder39.6 MiB363.8 MiB9.18×
Maximum resource segment · 1 Gbps policy · initiator74.1 MiB320.8 MiB4.33×
Maximum resource segment · 1 Gbps policy · responder71.8 MiB614.3 MiB8.56×
64-segment resource stream · initiator44.8 MiB1025.6 MiB22.88×
64-segment resource stream · responder39.5 MiB475.4 MiB12.03×
64-segment resource stream · 1 Gbps policy · initiator77.2 MiB632.4 MiB8.19×
64-segment resource stream · 1 Gbps policy · responder71.5 MiB659.4 MiB9.22×
Raw transport throughput · relay44.4 MiB323.4 MiB7.29×
Transported resource throughput · relay140.9 MiB257.5 MiB1.83×
Transported resource throughput · 1 Gbps policy · relay525.1 MiB199.5 MiB0.38×

A dash means no current three-sample release evidence is published for that scenario.

Detailed results

Sustained delivery of small messages over one established link.

SubjectConformanceRateGoodputRTT p50 / p99Peak RSS (i / r)Energy / delivery (i / r)
Prns → Prnsconformant 4581906/4581906 · 3/3 samples50.8k/s12.20 MB/s<1.00 / 1.00 msi 5.9 MiB / r 43.9 MiBi 0.37 mJ / r 0.08 mJ
Prns → RNS 1.4.2 (compiled)conformant 728043/728043 · 3/3 samples8.1k/s1.94 MB/s2.00 / 3.00 msi 5.6 MiB / r 242.7 MiBi 1.50 mJ / r 1.02 mJ
RNS 1.4.2 (compiled) → Prnsconformant 504340/504340 · 3/3 samples5.7k/s1.37 MB/s<1.00 / <1.00 msi 243.4 MiB / r 12.6 MiBi 2.22 mJ / r 0.45 mJ
RNS 1.4.2 (compiled) → RNS 1.4.2 (compiled)conformant 350550/350550 · 3/3 samples3.8k/s910.5 kB/s<1.00 / 1.00 msi 222.5 MiB / r 216.9 MiBi 2.38 mJ / r 2.16 mJ

Packets

Single-packet throughput (v6)

Sustained proved delivery of varied-size one-shot packets over TCP.

SubjectConformanceRateGoodputRTT p50 / p99Peak RSS (i / r)Energy / delivery (i / r)
Prns → Prnsconformant 2280212/2280212 · 3/3 samples25.3k/s5.56 MB/s<1.00 / 1.00 msi 5.5 MiB / r 34.8 MiBi 0.62 mJ / r 0.46 mJ
Prns → RNS 1.4.2 (compiled)conformant 824976/824976 · 3/3 samples9.4k/s2.07 MB/s2.00 / 2.00 msi 5.5 MiB / r 250.9 MiBi 1.79 mJ / r 0.75 mJ
RNS 1.4.2 (compiled) → RNS 1.4.2 (compiled)conformant 314870/314870 · 3/3 samples3.5k/s772.3 kB/s1.00 / 4.00 msi 207.7 MiB / r 214.0 MiBi 3.68 mJ / r 1.52 mJ
RNS 1.4.2 (compiled) → Prnsconformant 267781/267781 · 3/3 samples3.0k/s654.6 kB/s1.00 / 5.00 msi 205.5 MiB / r 8.9 MiBi 3.56 mJ / r 3.33 mJ

Requests

Request/response (v12)

Four concurrent small requests with asynchronous 1–4 KiB resource responses over four pre-established links.

SubjectConformanceRateRTT p50 / p99Peak RSS (i / r)Energy / delivery (i / r)
Prns → Prnsconformant 88652/88652 · 3/3 samples987/s3.89 / 5.63 msi 7.6 MiB / r 36.0 MiBi 0.97 mJ / r 25.11 mJ
RNS 1.4.2 (compiled) → Prnsconformant 56294/56294 · 3/3 samples624/s6.15 / 8.80 msi 240.1 MiB / r 34.9 MiBi 11.77 mJ / r 30.34 mJ
RNS 1.4.2 (compiled) → RNS 1.4.2 (compiled)conformant 51215/51215 · 3/3 samples569/s4.38 / 12.87 msi 239.8 MiB / r 270.4 MiBi 10.80 mJ / r 18.07 mJ
Prns → RNS 1.4.2 (compiled)1conformant 41192/41192 · 3/3 samples453/s2.16 / 254.03 msi 6.4 MiB / r 251.7 MiBi 4.20 mJ / r 22.19 mJ

Cell context

  1. Prns → RNS 1.4.2 (compiled) — RNS sends a resource advertisement before registering that resource internally. Prns can return the first pull so quickly that RNS drops it. Prns then waits for its 250 ms retry deadline. A p99 pinned just above 250 ms is the fingerprint of this race.

Resources

64-segment resource stream (v10)

Stream 64 maximum-efficient resource segments with compression disabled.

SubjectConformanceRateGoodputRTT p50 / p99Peak RSS (i / r)Energy / MiB (i / r)
Prns → Prnsconformant 394/394 · 3/3 samples4/s289.56 MB/s231.00 / 245.00 msi 44.8 MiB / r 39.5 MiBi 42.07 mJ/MiB / r 36.61 mJ/MiB
Prns → RNS 1.4.2 (compiled)conformant 118/118 · 3/3 samples1/s86.09 MB/s740.00 / 937.00 msi 14.0 MiB / r 592.6 MiBi 51.04 mJ/MiB / r 163.78 mJ/MiB
RNS 1.4.2 (compiled) → RNS 1.4.2 (compiled)conformant 69/69 · 3/3 samples0.75/s50.24 MB/s1268.00 / 1839.00 msi 1025.6 MiB / r 475.4 MiBi 126.91 mJ/MiB / r 151.84 mJ/MiB
RNS 1.4.2 (compiled) → Prns1conformant 24/24 · 3/3 samples0.25/s16.83 MB/s4030.00 / 4294.00 msi 409.1 MiB / r 9.5 MiBi 164.88 mJ/MiB / r 51.51 mJ/MiB

Cell context

  1. RNS 1.4.2 (compiled) → Prns — RNS prepares the next 1 MiB segment in a background thread. Prns proves the current segment before that preparation completes, making RNS enter a coarse 50 ms polling loop. A slower stock receiver gives preparation enough time to finish, avoiding that cliff.

Both implementations carry the same 67,108,800-byte payload in 64 maximum-efficient protocol segments. This is 64 bytes below 64 MiB and avoids making benchmark completion depend on RNS 1.4.2's timing-sensitive handoff to a 65th 64-byte tail segment.

64-segment resource stream · 1 Gbps policy (v3)

Stream 64 maximum-efficient resource segments with both endpoint TCP interfaces explicitly configured for the 1 Gbps MTU tier.

SubjectConformanceRateGoodputRTT p50 / p99Peak RSS (i / r)Energy / MiB (i / r)
Prns → Prnsconformant 389/389 · 3/3 samples4/s288.72 MB/s232.00 / 245.00 msi 77.2 MiB / r 71.5 MiBi 41.55 mJ/MiB / r 35.58 mJ/MiB
Prns → RNS 1.4.2 (compiled)conformant 105/105 · 3/3 samples1/s83.01 MB/s772.00 / 889.00 msi 139.7 MiB / r 779.3 MiBi 54.51 mJ/MiB / r 195.26 mJ/MiB
RNS 1.4.2 (compiled) → RNS 1.4.2 (compiled)conformant 50/50 · 3/3 samples0.57/s38.24 MB/s1105.00 / 8768.00 msi 632.4 MiB / r 659.4 MiBi 111.55 mJ/MiB / r 167.43 mJ/MiB
RNS 1.4.2 (compiled) → Prns1conformant 20/20 · 3/3 samples0.20/s13.33 MB/s4787.00 / 6924.00 msi 463.7 MiB / r 134.8 MiBi 117.31 mJ/MiB / r 37.02 mJ/MiB

Cell context

  1. RNS 1.4.2 (compiled) → Prns — RNS prepares the next 1 MiB segment in a background thread. Prns proves the current segment before that preparation completes, making RNS enter a coarse 50 ms polling loop. A slower stock receiver gives preparation enough time to finish, avoiding that cliff.

Controlled computational comparison: identical workload and protocol, with only TCP bitrate policy changed.

Both implementations carry the same 67,108,800-byte payload in 64 maximum-efficient protocol segments. This is 64 bytes below 64 MiB and avoids making benchmark completion depend on RNS 1.4.2's timing-sensitive handoff to a 65th 64-byte tail segment.

Maximum resource segment (v7)

Repeated transfer of one maximum-efficient resource segment.

SubjectConformanceRateGoodputRTT p50 / p99Peak RSS (i / r)Energy / MiB (i / r)
Prns → Prnsconformant 15989/15989 · 3/3 samples178/s186.30 MB/s5.00 / 6.00 msi 42.4 MiB / r 39.6 MiBi 56.98 mJ/MiB / r 45.55 mJ/MiB
RNS 1.4.2 (compiled) → Prnsconformant 9214/9214 · 3/3 samples102/s107.12 MB/s10.00 / 11.00 msi 474.6 MiB / r 10.0 MiBi 126.71 mJ/MiB / r 55.20 mJ/MiB
Prns → RNS 1.4.2 (compiled)conformant 5996/5996 · 3/3 samples67/s70.06 MB/s14.00 / 18.00 msi 12.0 MiB / r 408.5 MiBi 52.50 mJ/MiB / r 161.47 mJ/MiB
RNS 1.4.2 (compiled) → RNS 1.4.2 (compiled)conformant 4780/4780 · 3/3 samples53/s55.64 MB/s18.00 / 22.00 msi 345.6 MiB / r 363.8 MiBi 125.55 mJ/MiB / r 177.94 mJ/MiB

Maximum resource segment · 1 Gbps policy (v1)

Repeat maximum-efficient resource transfers with both endpoint TCP interfaces explicitly configured for the 1 Gbps MTU tier.

SubjectConformanceRateGoodputRTT p50 / p99Peak RSS (i / r)Energy / MiB (i / r)
Prns → Prnsconformant 16145/16145 · 3/3 samples178/s186.94 MB/s5.00 / 6.00 msi 74.1 MiB / r 71.8 MiBi 57.20 mJ/MiB / r 45.28 mJ/MiB
RNS 1.4.2 (compiled) → Prnsconformant 10200/10200 · 3/3 samples112/s117.68 MB/s8.00 / 10.00 msi 455.4 MiB / r 103.5 MiBi 115.53 mJ/MiB / r 51.78 mJ/MiB
Prns → RNS 1.4.2 (compiled)conformant 6006/6006 · 3/3 samples66/s69.15 MB/s14.00 / 18.00 msi 74.3 MiB / r 660.0 MiBi 57.96 mJ/MiB / r 191.22 mJ/MiB
RNS 1.4.2 (compiled) → RNS 1.4.2 (compiled)conformant 4829/4829 · 3/3 samples53/s56.04 MB/s18.00 / 22.00 msi 320.8 MiB / r 614.3 MiBi 105.70 mJ/MiB / r 196.26 mJ/MiB

Controlled computational comparison: identical workload and protocol, with only TCP bitrate policy changed.

Transport

Raw transport throughput (v2)

Balanced bidirectional switching of opaque packets through a pure transport node.

RelayTCP policy / MTULink MTU / payloadConformancePayloadFramesWire in / outRelay CPURelay peak RSSHarness source / sink / limit
Prns relay500 Mbps / 128 KiBconformant 61925195/61925195 · 3/3 samples167.05 MB/s696.1k/s242.68 MB/s / 231.54 MB/s37.04 s44.4 MiB6.06× / 5.99× / 5.99×
RNS 1.4.2 (compiled) relay10 Mbps / 8 KiBconformant 3039045/3039045 · 3/3 samples8.09 MB/s33.7k/s11.75 MB/s / 11.21 MB/s37.22 s323.4 MiB120.30× / 124.99× / 120.30×

Announce signing and verification happen before measurement; the timed path switches opaque transport data.

This practical profile preserves each implementation's normal TCP policy: 500 Mbps for Prns and 10 Mbps for compiled RNS 1.4.2.

Transported resource throughput (v2)

Relay balanced near-MTU resource parts over one warm transported link using each implementation's default TCP policy.

RelayTCP policy / MTULink MTU / payloadConformancePayloadFramesWire in / outRelay CPURelay peak RSSHarness source / sink / limit
Prns relay500 Mbps / 128 KiB128 / 128 KiBconformant 534585/534585 · 3/3 samples777.74 MB/s5.9k/s784.01 MB/s / 784.01 MB/s31.16 s140.9 MiB8.61× / 7.36× / 7.36×
RNS 1.4.2 (compiled) relay10 Mbps / 8 KiB8 / 8 KiBconformant 1779243/1779243 · 3/3 samples160.31 MB/s19.6k/s161.87 MB/s / 161.87 MB/s36.90 s257.5 MiB17.64× / 39.06× / 17.64×

Default-policy deployment view: Prns and RNS retain their normal TCP bitrate and MTU policy.

Transported resource throughput · 1 Gbps policy (v2)

Relay the identical transported-resource workload with both relay TCP interfaces explicitly configured for the 1 Gbps MTU tier.

RelayTCP policy / MTULink MTU / payloadConformancePayloadFramesWire in / outRelay CPURelay peak RSSHarness source / sink / limit
Prns relay1 Gbps / 512 KiB512 / 512 KiBconformant 119554/119554 · 3/3 samples691.07 MB/s1.3k/s696.54 MB/s / 696.54 MB/s30.84 s525.1 MiB8.22× / 6.28× / 6.28×
RNS 1.4.2 (compiled) relay1 Gbps / 512 KiB512 / 512 KiBconformant 24735/24735 · 3/3 samples146.45 MB/s279/s147.61 MB/s / 147.61 MB/s34.26 s199.5 MiB38.56× / 30.38× / 30.38×

Controlled computational comparison: identical transported link and driver, with only TCP bitrate policy changed.

Implementation legend

  • Prns — Rust, ed25519-dalek 2.2.

  • RNS 1.4.2 (compiled) — Python, PyCA cryptography / OpenSSL; reference.

Metric legend

Conformance is clean samples and exact delivered/sent accounting. Rows are ordered by median throughput, never by memory or energy. Rate is median settled operations per second. Goodput is median application bytes per second. Relay scenarios report carried opaque payload bytes, forwarded frames, actual HDLC-framed TCP wire rates, relay-only CPU/RSS, and full-path driver source/sink/limiting headroom; transported-resource rows additionally expose negotiated link MTU and payload bytes per part. RTT is median p50/p99 settlement latency. Peak RSS shows the largest initiator (i) and responder (r) process peaks across samples. Energy shows optional initiator/responder attribution of median net processor energy and appears only with three positive-baseline samples: per delivery for packets/requests, per application MiB for resources. Relay-scenario energy is whole-cell package energy, never relay-only energy.

Prns

Brought to you by KenAKAFrosty and the Personal/Prns team.

Open source. MIT / Apache 2.0.

prns.dev·reticulum.rs

Third-party logos, trademarks, and product images belong to their respective owners. They are shown only to identify platforms, hardware, and compatibility targets. No endorsement is claimed or implied.

Prns 0.3.7 · commit 72fcc426818d