rustzmq2 vs libzmq

Criterion median timings, side-by-side. Ratio = libzmq / rustzmq2 — higher is better for rustzmq2. Click a pattern name to open the full criterion report for that group.

Head-to-head

Per-sub columns (pub_sub, xpub_sub): median / p99 latency from publish to each subscriber receiving the message. Criterion’s headline number is the barrier time (time until the slowest subscriber finishes) — informative as a tail metric but dominated by stragglers. Median-per-sub is the typical-case latency a real application would observe.

PatternTransportSizerustzmq2 barrierlibzmq barrierrustzmq2 p50/p99libzmq p50/p99Ratio
pairtcp16 B49.52 µs56.23 µs 1.14×
pairtcp256 B49.96 µs57.37 µs 1.15×
pairtcp4 KB54.17 µs60.44 µs 1.12×
pairtcp64 KB92.14 µs100.43 µs 1.09×
pairipc16 B41.33 µs47.69 µs 1.15×
pairipc256 B41.46 µs49.63 µs 1.20×
pairipc4 KB46.11 µs52.54 µs 1.14×
pairipc64 KB66.38 µs81.30 µs 1.22×
pairinproc16 B1.08 µs20.71 µs 19.12×
pairinproc256 B1.11 µs21.11 µs 19.06×
pairinproc4 KB1.28 µs22.61 µs 17.60×
pairinproc64 KB3.51 µs30.64 µs 8.73×
pub_sub (subs=8)tcp16 B75.52 µs133.49 µs 68.56 µs / 95.38 µs 91.94 µs / 140.30 µs 1.34×
pub_sub (subs=1)tcp16 B38.50 µs41.35 µs 37.89 µs / 52.31 µs 37.46 µs / 55.23 µs 0.99× (1.01× slower)
pub_sub (subs=64)tcp16 B401.48 µs897.70 µs 344.08 µs / 487.35 µs 632.58 µs / 906.68 µs 1.84×
pub_sub (subs=8)tcp256 B75.58 µs135.65 µs 68.03 µs / 95.07 µs 92.03 µs / 144.56 µs 1.35×
pub_sub (subs=1)tcp256 B38.93 µs42.18 µs 37.30 µs / 51.12 µs 38.40 µs / 47.52 µs 1.03×
pub_sub (subs=64)tcp256 B406.17 µs916.54 µs 347.28 µs / 496.65 µs 621.01 µs / 867.46 µs 1.79×
pub_sub (subs=8)tcp4 KB82.45 µs145.55 µs 78.47 µs / 103.79 µs 111.03 µs / 159.75 µs 1.41×
pub_sub (subs=1)tcp4 KB41.25 µs43.15 µs 41.39 µs / 53.68 µs 39.45 µs / 46.82 µs 0.95× (1.05× slower)
pub_sub (subs=64)tcp4 KB447.41 µs982.27 µs 413.43 µs / 512.58 µs 631.00 µs / 913.87 µs 1.53×
pub_sub (subs=8)tcp64 KB170.30 µs292.37 µs 162.05 µs / 288.16 µs 229.06 µs / 303.52 µs 1.41×
pub_sub (subs=1)tcp64 KB63.25 µs62.39 µs 62.72 µs / 78.65 µs 58.58 µs / 70.64 µs 0.93× (1.07× slower)
pub_sub (subs=64)tcp64 KB973.67 µs3.09 ms 924.82 µs / 1.01 ms 1.78 ms / 2.99 ms 1.92×
pub_sub (subs=1)ipc16 B34.35 µs35.85 µs 33.72 µs / 40.66 µs 32.17 µs / 37.25 µs 0.95× (1.05× slower)
pub_sub (subs=64)ipc16 B276.11 µs671.54 µs 252.45 µs / 304.48 µs 491.60 µs / 597.95 µs 1.95×
pub_sub (subs=8)ipc16 B55.98 µs99.96 µs 51.11 µs / 67.16 µs 62.02 µs / 92.55 µs 1.21×
pub_sub (subs=1)ipc256 B34.71 µs37.26 µs 34.06 µs / 40.88 µs 33.57 µs / 38.31 µs 0.99× (1.01× slower)
pub_sub (subs=64)ipc256 B286.02 µs687.59 µs 260.05 µs / 315.33 µs 518.00 µs / 620.84 µs 1.99×
pub_sub (subs=8)ipc256 B56.71 µs102.86 µs 51.56 µs / 66.79 µs 66.59 µs / 95.52 µs 1.29×
pub_sub (subs=1)ipc4 KB36.89 µs38.88 µs 36.40 µs / 44.62 µs 35.33 µs / 40.80 µs 0.97× (1.03× slower)
pub_sub (subs=64)ipc4 KB360.50 µs792.56 µs 328.19 µs / 383.81 µs 609.58 µs / 706.78 µs 1.86×
pub_sub (subs=8)ipc4 KB67.81 µs113.45 µs 59.30 µs / 79.65 µs 79.70 µs / 111.01 µs 1.34×
pub_sub (subs=1)ipc64 KB52.66 µs53.12 µs 52.42 µs / 64.06 µs 49.12 µs / 57.00 µs 0.94× (1.07× slower)
pub_sub (subs=64)ipc64 KB861.85 µs2.65 ms 802.81 µs / 893.38 µs 1.42 ms / 2.45 ms 1.77×
pub_sub (subs=8)ipc64 KB148.12 µs245.14 µs 138.43 µs / 178.19 µs 176.44 µs / 249.92 µs 1.27×
pub_sub (subs=1)inproc16 B671 ns16.02 µs 424 ns / 448 ns 12.71 µs / 13.92 µs 29.98×
pub_sub (subs=64)inproc16 B18.19 µs396.59 µs 12.05 µs / 18.86 µs 226.39 µs / 263.45 µs 18.78×
pub_sub (subs=8)inproc16 B2.61 µs59.56 µs 1.68 µs / 2.46 µs 30.75 µs / 44.65 µs 18.31×
pub_sub (subs=1)inproc256 B678 ns16.20 µs 424 ns / 464 ns 12.88 µs / 14.11 µs 30.38×
pub_sub (subs=64)inproc256 B18.20 µs393.81 µs 12.18 µs / 20.35 µs 220.07 µs / 259.03 µs 18.06×
pub_sub (subs=8)inproc256 B2.63 µs61.45 µs 1.69 µs / 2.46 µs 37.60 µs / 50.31 µs 22.29×
pub_sub (subs=1)inproc4 KB756 ns16.57 µs 504 ns / 543 ns 13.58 µs / 14.61 µs 26.95×
pub_sub (subs=64)inproc4 KB18.58 µs403.03 µs 12.39 µs / 19.93 µs 227.28 µs / 271.08 µs 18.34×
pub_sub (subs=8)inproc4 KB2.70 µs62.42 µs 1.78 µs / 2.52 µs 33.92 µs / 47.98 µs 19.10×
pub_sub (subs=1)inproc64 KB1.75 µs18.99 µs 1.47 µs / 1.53 µs 15.50 µs / 19.78 µs 10.53×
pub_sub (subs=64)inproc64 KB19.87 µs426.72 µs 13.86 µs / 22.73 µs 253.04 µs / 311.40 µs 18.25×
pub_sub (subs=8)inproc64 KB3.74 µs67.56 µs 2.80 µs / 3.58 µs 44.63 µs / 65.71 µs 15.94×
pub_xsubtcp16 B41.91 µs29.44 µs 0.70× (1.42× slower)
pub_xsubtcp256 B41.34 µs30.22 µs 0.73× (1.37× slower)
pub_xsubtcp4 KB43.32 µs30.67 µs 0.71× (1.41× slower)
pub_xsubtcp64 KB63.87 µs48.86 µs 0.76× (1.31× slower)
pub_xsubipc16 B34.19 µs23.47 µs 0.69× (1.46× slower)
pub_xsubipc256 B34.13 µs24.44 µs 0.72× (1.40× slower)
pub_xsubipc4 KB36.02 µs26.04 µs 0.72× (1.38× slower)
pub_xsubipc64 KB52.03 µs39.69 µs 0.76× (1.31× slower)
push_pulltcp16 B39.53 µs29.13 µs 0.74× (1.36× slower)
push_pulltcp256 B39.40 µs30.28 µs 0.77× (1.30× slower)
push_pulltcp4 KB43.27 µs30.66 µs 0.71× (1.41× slower)
push_pulltcp64 KB60.27 µs48.05 µs 0.80× (1.25× slower)
push_pullipc16 B31.98 µs23.87 µs 0.75× (1.34× slower)
push_pullipc256 B32.11 µs24.63 µs 0.77× (1.30× slower)
push_pullipc4 KB34.40 µs25.93 µs 0.75× (1.33× slower)
push_pullipc64 KB47.37 µs40.19 µs 0.85× (1.18× slower)
push_pullinproc16 B615 ns160 ns 0.26× (3.85× slower)
push_pullinproc256 B622 ns173 ns 0.28× (3.61× slower)
push_pullinproc4 KB707 ns360 ns 0.51× (1.97× slower)
push_pullinproc64 KB1.78 µs2.48 µs 1.39×
req_reptcp16 B50.21 µs57.34 µs 1.14×
req_reptcp256 B50.93 µs59.04 µs 1.16×
req_reptcp4 KB57.11 µs61.89 µs 1.08×
req_reptcp64 KB98.05 µs101.50 µs 1.04×
req_repipc16 B41.38 µs49.85 µs 1.20×
req_repipc256 B41.69 µs52.14 µs 1.25×
req_repipc4 KB47.29 µs55.14 µs 1.17×
req_repipc64 KB67.05 µs85.23 µs 1.27×
req_repinproc16 B949 ns21.95 µs 23.14×
req_repinproc256 B963 ns22.25 µs 23.10×
req_repinproc4 KB1.17 µs23.95 µs 20.51×
req_repinproc64 KB3.32 µs31.58 µs 9.50×
throughput/dealer_routertcp256 B7.47 ms1.84 ms 0.25× (4.06× slower)
throughput/dealer_routertcp4 KB9.32 ms10.84 ms 1.16×
throughput/dealer_routeripc256 B3.35 ms1.66 ms 0.50× (2.01× slower)
throughput/dealer_routeripc4 KB6.50 ms8.24 ms 1.27×
throughput/dealer_routerinproc256 B882.33 µs1.32 ms 1.50×
throughput/dealer_routerinproc4 KB832.42 µs2.22 ms 2.67×
throughput/pub_fanout (subs=8)tcp256 B15.25 ms4.73 ms 0.31× (3.22× slower)
throughput/pub_fanout (subs=64)tcp256 B103.28 ms39.69 ms 0.38× (2.60× slower)
throughput/pub_fanout (subs=1)tcp256 B4.15 ms847.96 µs 0.20× (4.89× slower)
throughput/pub_fanout (subs=8)tcp4 KB23.07 ms51.12 ms 2.22×
throughput/pub_fanout (subs=64)tcp4 KB161.97 ms463.24 ms 2.86×
throughput/pub_fanout (subs=1)tcp4 KB4.96 ms5.20 ms 1.05×
throughput/pub_fanout (subs=64)ipc256 B67.15 ms29.36 ms 0.44× (2.29× slower)
throughput/pub_fanout (subs=1)ipc256 B1.92 ms773.61 µs 0.40× (2.49× slower)
throughput/pub_fanout (subs=8)ipc256 B9.18 ms3.51 ms 0.38× (2.62× slower)
throughput/pub_fanout (subs=64)ipc4 KB143.38 ms304.65 ms 2.12×
throughput/pub_fanout (subs=1)ipc4 KB3.26 ms2.89 ms 0.89× (1.13× slower)
throughput/pub_fanout (subs=8)ipc4 KB19.32 ms29.79 ms 1.54×
xpub_sub (subs=64)tcp16 B435.85 µs861.57 µs 409.30 µs / 478.05 µs 566.01 µs / 856.58 µs 1.38×
xpub_sub (subs=8)tcp16 B83.61 µs130.54 µs 77.98 µs / 99.40 µs 90.02 µs / 137.87 µs 1.15×
xpub_sub (subs=1)tcp16 B41.62 µs40.85 µs 39.74 µs / 54.26 µs 37.23 µs / 44.79 µs 0.94× (1.07× slower)
xpub_sub (subs=64)tcp256 B434.94 µs882.34 µs 390.73 µs / 458.01 µs 595.25 µs / 868.43 µs 1.52×
xpub_sub (subs=8)tcp256 B84.84 µs132.56 µs 79.78 µs / 100.59 µs 92.94 µs / 141.54 µs 1.16×
xpub_sub (subs=1)tcp256 B41.94 µs41.55 µs 41.07 µs / 56.09 µs 38.02 µs / 44.78 µs 0.93× (1.08× slower)
xpub_sub (subs=64)tcp4 KB498.41 µs935.38 µs 481.07 µs / 547.27 µs 605.03 µs / 862.76 µs 1.26×
xpub_sub (subs=8)tcp4 KB93.74 µs141.14 µs 88.64 µs / 114.92 µs 106.43 µs / 159.32 µs 1.20×
xpub_sub (subs=1)tcp4 KB46.18 µs42.21 µs 46.62 µs / 60.08 µs 38.48 µs / 45.69 µs 0.83× (1.21× slower)
xpub_sub (subs=64)tcp64 KB973.65 µs3.00 ms 925.69 µs / 1.02 ms 1.36 ms / 2.39 ms 1.47×
xpub_sub (subs=8)tcp64 KB171.01 µs283.05 µs 160.96 µs / 201.69 µs 241.71 µs / 310.92 µs 1.50×
xpub_sub (subs=1)tcp64 KB65.34 µs61.34 µs 65.09 µs / 80.88 µs 57.27 µs / 69.88 µs 0.88× (1.14× slower)
xpub_sub (subs=1)ipc16 B34.86 µs35.00 µs 34.11 µs / 40.58 µs 31.47 µs / 36.42 µs 0.92× (1.08× slower)
xpub_sub (subs=64)ipc16 B275.00 µs636.25 µs 242.65 µs / 293.46 µs 468.95 µs / 568.12 µs 1.93×
xpub_sub (subs=8)ipc16 B56.99 µs96.09 µs 51.06 µs / 67.05 µs 62.03 µs / 91.03 µs 1.21×
xpub_sub (subs=1)ipc256 B35.07 µs36.00 µs 34.52 µs / 41.61 µs 32.55 µs / 37.52 µs 0.94× (1.06× slower)
xpub_sub (subs=64)ipc256 B282.82 µs655.08 µs 250.62 µs / 305.85 µs 490.37 µs / 593.48 µs 1.96×
xpub_sub (subs=8)ipc256 B57.72 µs98.28 µs 51.87 µs / 68.31 µs 63.19 µs / 91.95 µs 1.22×
xpub_sub (subs=1)ipc4 KB37.05 µs37.90 µs 36.13 µs / 44.43 µs 34.81 µs / 40.25 µs 0.96× (1.04× slower)
xpub_sub (subs=64)ipc4 KB351.65 µs752.27 µs 322.24 µs / 378.23 µs 594.54 µs / 680.08 µs 1.84×
xpub_sub (subs=8)ipc4 KB68.40 µs108.80 µs 60.79 µs / 80.11 µs 75.24 µs / 103.16 µs 1.24×
xpub_sub (subs=1)ipc64 KB54.14 µs51.68 µs 53.30 µs / 65.45 µs 47.81 µs / 55.33 µs 0.90× (1.11× slower)
xpub_sub (subs=64)ipc64 KB859.62 µs1.65 ms 825.65 µs / 937.06 µs 1.13 ms / 1.83 ms 1.36×
xpub_sub (subs=8)ipc64 KB150.82 µs237.23 µs 138.66 µs / 177.16 µs 173.42 µs / 242.10 µs 1.25×

rustzmq2 only (no libzmq counterpart)

PatternTransportSizerustzmq2
channeltcp16 B69.83 µs
channeltcp256 B70.56 µs
channeltcp4 KB80.78 µs
channeltcp64 KB127.35 µs
channelipc16 B63.02 µs
channelipc256 B63.57 µs
channelipc4 KB67.42 µs
channelipc64 KB96.23 µs
channelinproc16 B1.12 µs
channelinproc256 B1.15 µs
channelinproc4 KB1.33 µs
channelinproc64 KB3.52 µs
pub_xsubinproc16 B534 ns
pub_xsubinproc256 B534 ns
pub_xsubinproc4 KB632 ns
pub_xsubinproc64 KB1.54 µs
scatter_gathertcp16 B38.79 µs
scatter_gathertcp256 B39.30 µs
scatter_gathertcp4 KB43.13 µs
scatter_gathertcp64 KB60.11 µs
scatter_gatheripc16 B32.25 µs
scatter_gatheripc256 B32.32 µs
scatter_gatheripc4 KB34.64 µs
scatter_gatheripc64 KB48.18 µs
scatter_gatherinproc16 B619 ns
scatter_gatherinproc256 B629 ns
scatter_gatherinproc4 KB714 ns
scatter_gatherinproc64 KB1.80 µs
throughput/pub_fanout (subs=64)inproc256 B11.72 ms
throughput/pub_fanout (subs=1)inproc256 B1.07 ms
throughput/pub_fanout (subs=8)inproc256 B1.84 ms
throughput/pub_fanout (subs=64)inproc4 KB11.75 ms
throughput/pub_fanout (subs=1)inproc4 KB1.50 ms
throughput/pub_fanout (subs=8)inproc4 KB2.73 ms

← back to all shard reports