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 B46.14 µs58.29 µs 1.26×
pairtcp256 B46.59 µs59.15 µs 1.27×
pairtcp4 KB50.63 µs62.09 µs 1.23×
pairtcp64 KB84.80 µs102.46 µs 1.21×
pairipc16 B39.31 µs48.82 µs 1.24×
pairipc256 B39.32 µs50.18 µs 1.28×
pairipc4 KB42.95 µs53.48 µs 1.25×
pairipc64 KB61.76 µs81.61 µs 1.32×
pairinproc16 B1.11 µs21.48 µs 19.31×
pairinproc256 B1.12 µs21.86 µs 19.54×
pairinproc4 KB1.31 µs23.13 µs 17.63×
pairinproc64 KB3.48 µs30.43 µs 8.74×
pub_sub (subs=64)tcp16 B464.22 µs967.56 µs 381.52 µs / 991.91 µs 634.42 µs / 958.34 µs 1.66×
pub_sub (subs=1)tcp16 B40.41 µs37.58 µs 40.55 µs / 50.14 µs 32.08 µs / 40.62 µs 0.79× (1.26× slower)
pub_sub (subs=8)tcp16 B67.00 µs127.30 µs 62.00 µs / 90.90 µs 91.39 µs / 141.03 µs 1.47×
pub_sub (subs=64)tcp256 B467.67 µs992.42 µs 394.58 µs / 993.79 µs 684.00 µs / 967.86 µs 1.73×
pub_sub (subs=1)tcp256 B39.80 µs37.97 µs 40.20 µs / 49.62 µs 33.66 µs / 46.06 µs 0.84× (1.19× slower)
pub_sub (subs=8)tcp256 B67.55 µs129.88 µs 61.50 µs / 89.70 µs 94.07 µs / 145.52 µs 1.53×
pub_sub (subs=64)tcp4 KB527.32 µs1.05 ms 443.44 µs / 933.43 µs 707.04 µs / 958.66 µs 1.59×
pub_sub (subs=1)tcp4 KB42.33 µs39.65 µs 41.62 µs / 48.40 µs 35.30 µs / 45.65 µs 0.85× (1.18× slower)
pub_sub (subs=8)tcp4 KB73.91 µs143.31 µs 69.13 µs / 94.99 µs 103.68 µs / 162.93 µs 1.50×
pub_sub (subs=64)tcp64 KB961.24 µs2.71 ms 841.54 µs / 1.49 ms 1.51 ms / 2.59 ms 1.79×
pub_sub (subs=1)tcp64 KB55.16 µs67.07 µs 52.59 µs / 66.51 µs 59.19 µs / 94.26 µs 1.13×
pub_sub (subs=8)tcp64 KB148.71 µs306.02 µs 143.72 µs / 239.42 µs 263.28 µs / 329.06 µs 1.83×
pub_sub (subs=64)ipc16 B326.25 µs796.90 µs 327.14 µs / 408.64 µs 481.20 µs / 723.21 µs 1.47×
pub_sub (subs=8)ipc16 B49.30 µs94.39 µs 44.20 µs / 60.21 µs 60.71 µs / 92.28 µs 1.37×
pub_sub (subs=1)ipc16 B26.31 µs30.82 µs 26.06 µs / 32.12 µs 26.61 µs / 30.47 µs 1.02×
pub_sub (subs=64)ipc256 B337.41 µs809.60 µs 339.93 µs / 431.16 µs 488.65 µs / 693.26 µs 1.44×
pub_sub (subs=8)ipc256 B49.84 µs96.06 µs 44.95 µs / 62.41 µs 63.15 µs / 93.55 µs 1.40×
pub_sub (subs=1)ipc256 B26.13 µs31.23 µs 25.78 µs / 32.40 µs 27.21 µs / 31.95 µs 1.06×
pub_sub (subs=64)ipc4 KB421.88 µs882.30 µs 358.97 µs / 573.53 µs 569.80 µs / 749.00 µs 1.59×
pub_sub (subs=8)ipc4 KB58.73 µs109.01 µs 52.95 µs / 75.22 µs 75.23 µs / 108.36 µs 1.42×
pub_sub (subs=1)ipc4 KB29.61 µs33.07 µs 28.97 µs / 35.95 µs 29.02 µs / 33.87 µs 1.00×
pub_sub (subs=64)ipc64 KB938.97 µs2.39 ms 767.52 µs / 1.44 ms 1.27 ms / 2.05 ms 1.66×
pub_sub (subs=8)ipc64 KB125.54 µs249.76 µs 118.52 µs / 198.73 µs 206.72 µs / 256.51 µs 1.74×
pub_sub (subs=1)ipc64 KB46.76 µs47.48 µs 45.70 µs / 55.35 µs 42.15 µs / 61.80 µs 0.92× (1.08× slower)
pub_sub (subs=1)inproc16 B682 ns16.68 µs 424 ns / 456 ns 13.24 µs / 14.21 µs 31.22×
pub_sub (subs=8)inproc16 B2.65 µs49.44 µs 1.70 µs / 2.46 µs 30.12 µs / 49.32 µs 17.67×
pub_sub (subs=64)inproc16 B18.05 µs470.31 µs 11.82 µs / 18.24 µs 297.13 µs / 343.06 µs 25.13×
pub_sub (subs=1)inproc256 B689 ns16.98 µs 432 ns / 472 ns 13.35 µs / 14.44 µs 30.91×
pub_sub (subs=8)inproc256 B2.67 µs49.06 µs 1.70 µs / 2.48 µs 28.05 µs / 43.75 µs 16.46×
pub_sub (subs=64)inproc256 B17.93 µs464.16 µs 11.63 µs / 17.88 µs 287.87 µs / 331.79 µs 24.76×
pub_sub (subs=1)inproc4 KB765 ns17.17 µs 512 ns / 552 ns 13.75 µs / 14.82 µs 26.86×
pub_sub (subs=8)inproc4 KB2.82 µs52.13 µs 1.88 µs / 2.69 µs 30.54 µs / 50.73 µs 16.25×
pub_sub (subs=64)inproc4 KB18.17 µs479.21 µs 11.84 µs / 18.35 µs 298.41 µs / 342.72 µs 25.20×
pub_sub (subs=1)inproc64 KB1.74 µs19.27 µs 1.46 µs / 1.52 µs 15.77 µs / 18.76 µs 10.83×
pub_sub (subs=8)inproc64 KB3.82 µs66.22 µs 2.81 µs / 3.58 µs 44.76 µs / 67.96 µs 15.94×
pub_sub (subs=64)inproc64 KB19.41 µs591.22 µs 12.95 µs / 20.34 µs 417.45 µs / 476.91 µs 32.23×
pub_xsubtcp16 B43.60 µs28.71 µs 0.66× (1.52× slower)
pub_xsubtcp256 B43.81 µs29.94 µs 0.68× (1.46× slower)
pub_xsubtcp4 KB45.52 µs31.12 µs 0.68× (1.46× slower)
pub_xsubtcp64 KB59.68 µs49.84 µs 0.84× (1.20× slower)
pub_xsubipc16 B28.02 µs18.87 µs 0.67× (1.49× slower)
pub_xsubipc256 B27.39 µs24.53 µs 0.90× (1.12× slower)
pub_xsubipc4 KB31.50 µs26.40 µs 0.84× (1.19× slower)
pub_xsubipc64 KB48.82 µs39.71 µs 0.81× (1.23× slower)
push_pulltcp16 B39.49 µs28.24 µs 0.72× (1.40× slower)
push_pulltcp256 B40.03 µs28.97 µs 0.72× (1.38× slower)
push_pulltcp4 KB43.85 µs30.39 µs 0.69× (1.44× slower)
push_pulltcp64 KB54.38 µs48.18 µs 0.89× (1.13× slower)
push_pullipc16 B24.84 µs22.63 µs 0.91× (1.10× slower)
push_pullipc256 B25.14 µs23.26 µs 0.93× (1.08× slower)
push_pullipc4 KB28.20 µs25.37 µs 0.90× (1.11× slower)
push_pullipc64 KB42.60 µs38.61 µs 0.91× (1.10× slower)
push_pullinproc16 B623 ns155 ns 0.25× (4.03× slower)
push_pullinproc256 B630 ns171 ns 0.27× (3.68× slower)
push_pullinproc4 KB716 ns348 ns 0.49× (2.06× slower)
push_pullinproc64 KB1.81 µs2.52 µs 1.39×
req_reptcp16 B51.51 µs58.69 µs 1.14×
req_reptcp256 B51.96 µs60.41 µs 1.16×
req_reptcp4 KB58.15 µs62.83 µs 1.08×
req_reptcp64 KB97.43 µs102.05 µs 1.05×
req_repipc16 B43.12 µs48.10 µs 1.12×
req_repipc256 B43.06 µs49.83 µs 1.16×
req_repipc4 KB49.12 µs53.41 µs 1.09×
req_repipc64 KB68.30 µs82.25 µs 1.20×
req_repinproc16 B945 ns20.36 µs 21.55×
req_repinproc256 B960 ns21.02 µs 21.90×
req_repinproc4 KB1.15 µs22.54 µs 19.64×
req_repinproc64 KB3.33 µs30.65 µs 9.22×
throughput/dealer_routertcp256 B7.74 ms1.63 ms 0.21× (4.75× slower)
throughput/dealer_routertcp4 KB18.34 ms9.72 ms 0.53× (1.89× slower)
throughput/dealer_routeripc256 B4.59 ms1.64 ms 0.36× (2.80× slower)
throughput/dealer_routeripc4 KB8.03 ms6.71 ms 0.84× (1.20× slower)
throughput/dealer_routerinproc256 B789.62 µs1.30 ms 1.65×
throughput/dealer_routerinproc4 KB850.88 µs2.26 ms 2.65×
throughput/pub_fanout (subs=8)tcp256 B15.30 ms4.03 ms 0.26× (3.80× slower)
throughput/pub_fanout (subs=64)tcp256 B137.10 ms35.40 ms 0.26× (3.87× slower)
throughput/pub_fanout (subs=1)tcp256 B3.83 ms773.94 µs 0.20× (4.95× slower)
throughput/pub_fanout (subs=8)tcp4 KB128.36 ms42.86 ms 0.33× (2.99× slower)
throughput/pub_fanout (subs=64)tcp4 KB245.19 ms405.87 ms 1.66×
throughput/pub_fanout (subs=1)tcp4 KB4.58 ms4.60 ms 1.00×
throughput/pub_fanout (subs=1)ipc256 B2.19 ms595.18 µs 0.27× (3.68× slower)
throughput/pub_fanout (subs=64)ipc256 B69.62 ms27.41 ms 0.39× (2.54× slower)
throughput/pub_fanout (subs=8)ipc256 B9.29 ms3.13 ms 0.34× (2.97× slower)
throughput/pub_fanout (subs=1)ipc4 KB3.82 ms2.95 ms 0.77× (1.30× slower)
throughput/pub_fanout (subs=64)ipc4 KB147.65 ms281.39 ms 1.91×
throughput/pub_fanout (subs=8)ipc4 KB18.95 ms25.84 ms 1.36×
xpub_sub (subs=64)tcp16 B500.19 µs923.17 µs 407.92 µs / 984.67 µs 611.83 µs / 847.19 µs 1.50×
xpub_sub (subs=1)tcp16 B46.59 µs33.92 µs 46.46 µs / 55.17 µs 29.53 µs / 37.41 µs 0.64× (1.57× slower)
xpub_sub (subs=8)tcp16 B75.75 µs118.75 µs 68.27 µs / 92.92 µs 85.43 µs / 127.86 µs 1.25×
xpub_sub (subs=64)tcp256 B500.08 µs930.88 µs 405.95 µs / 1.01 ms 636.25 µs / 893.38 µs 1.57×
xpub_sub (subs=1)tcp256 B46.79 µs34.51 µs 46.21 µs / 55.66 µs 30.89 µs / 36.63 µs 0.67× (1.50× slower)
xpub_sub (subs=8)tcp256 B77.26 µs120.41 µs 70.75 µs / 96.01 µs 87.84 µs / 130.44 µs 1.24×
xpub_sub (subs=64)tcp4 KB555.52 µs976.74 µs 455.31 µs / 1.08 ms 679.78 µs / 894.30 µs 1.49×
xpub_sub (subs=1)tcp4 KB51.08 µs35.51 µs 50.63 µs / 60.62 µs 31.90 µs / 38.21 µs 0.63× (1.59× slower)
xpub_sub (subs=8)tcp4 KB87.03 µs134.69 µs 80.44 µs / 111.59 µs 100.36 µs / 149.73 µs 1.25×
xpub_sub (subs=64)tcp64 KB1.03 ms2.06 ms 850.19 µs / 1.69 ms 1.52 ms / 2.56 ms 1.79×
xpub_sub (subs=1)tcp64 KB63.00 µs57.02 µs 61.69 µs / 82.99 µs 52.12 µs / 81.52 µs 0.84× (1.18× slower)
xpub_sub (subs=8)tcp64 KB153.29 µs291.06 µs 149.22 µs / 236.90 µs 246.53 µs / 301.34 µs 1.65×
xpub_sub (subs=1)ipc16 B26.58 µs28.15 µs 26.12 µs / 32.95 µs 24.33 µs / 28.51 µs 0.93× (1.07× slower)
xpub_sub (subs=8)ipc16 B49.84 µs90.33 µs 44.56 µs / 61.71 µs 59.02 µs / 86.99 µs 1.32×
xpub_sub (subs=64)ipc16 B328.35 µs761.76 µs 273.33 µs / 611.90 µs 463.98 µs / 696.67 µs 1.70×
xpub_sub (subs=1)ipc256 B27.33 µs28.81 µs 26.98 µs / 33.74 µs 25.18 µs / 28.67 µs 0.93× (1.07× slower)
xpub_sub (subs=8)ipc256 B50.26 µs91.98 µs 44.91 µs / 62.14 µs 60.52 µs / 91.08 µs 1.35×
xpub_sub (subs=64)ipc256 B326.98 µs769.52 µs 269.62 µs / 578.53 µs 468.91 µs / 680.57 µs 1.74×
xpub_sub (subs=1)ipc4 KB31.16 µs30.32 µs 30.18 µs / 38.98 µs 26.38 µs / 30.95 µs 0.87× (1.14× slower)
xpub_sub (subs=8)ipc4 KB59.05 µs103.93 µs 53.26 µs / 74.11 µs 70.44 µs / 102.31 µs 1.32×
xpub_sub (subs=64)ipc4 KB412.00 µs826.90 µs 355.80 µs / 699.95 µs 552.82 µs / 728.38 µs 1.55×
xpub_sub (subs=1)ipc64 KB49.64 µs44.26 µs 48.58 µs / 58.73 µs 39.48 µs / 49.42 µs 0.81× (1.23× slower)
xpub_sub (subs=8)ipc64 KB123.73 µs238.63 µs 112.67 µs / 177.67 µs 198.15 µs / 239.43 µs 1.76×
xpub_sub (subs=64)ipc64 KB902.26 µs1.69 ms 717.51 µs / 1.27 ms 1.22 ms / 1.73 ms 1.71×

rustzmq2 only (no libzmq counterpart)

PatternTransportSizerustzmq2
channeltcp16 B84.36 µs
channeltcp256 B84.91 µs
channeltcp4 KB92.22 µs
channeltcp64 KB150.43 µs
channelipc16 B55.05 µs
channelipc256 B54.62 µs
channelipc4 KB60.58 µs
channelipc64 KB96.89 µs
channelinproc16 B1.15 µs
channelinproc256 B1.16 µs
channelinproc4 KB1.35 µs
channelinproc64 KB3.55 µs
pub_xsubinproc16 B527 ns
pub_xsubinproc256 B535 ns
pub_xsubinproc4 KB617 ns
pub_xsubinproc64 KB1.54 µs
scatter_gathertcp16 B43.96 µs
scatter_gathertcp256 B44.45 µs
scatter_gathertcp4 KB48.52 µs
scatter_gathertcp64 KB63.01 µs
scatter_gatheripc16 B27.29 µs
scatter_gatheripc256 B27.17 µs
scatter_gatheripc4 KB30.75 µs
scatter_gatheripc64 KB50.21 µs
scatter_gatherinproc16 B636 ns
scatter_gatherinproc256 B641 ns
scatter_gatherinproc4 KB728 ns
scatter_gatherinproc64 KB1.80 µs
throughput/pub_fanout (subs=8)inproc256 B2.58 ms
throughput/pub_fanout (subs=64)inproc256 B16.00 ms
throughput/pub_fanout (subs=1)inproc256 B1.14 ms
throughput/pub_fanout (subs=8)inproc4 KB2.65 ms
throughput/pub_fanout (subs=64)inproc4 KB15.80 ms
throughput/pub_fanout (subs=1)inproc4 KB1.46 ms

← back to all shard reports