Rust actor benchmarks

Latitude.sh f4.metal.small · AMD EPYC 4484PX 12-Core Processor, 24 threads · 2026-10-14 · median of 7 samples

Overview

Times slower than the best in each row. Latency rows use p99. The stronger the colour, the faster.

1 worker
axonactixractorkameocoercextra
Ask round tripbest1.10×1.50×1.80×1.41×1.16×
Latency 100 k/sbest2.3×3.7×3.8×3.5×3.9×
Latency 1 M/sbest3.0×4.3×3.9×3.9×5.6×
Tell, one to onebest4.8×5.9×9.6×11.9×4.7×
Outside tellbest6.1×4.7×4.9×5.9×6.7×
1 KiB messagesbest2.2×3.7×3.4×12.7×2.2×
Four into onebest2.7×6.2×9.8×13.3×4.9×
One into 64best2.2×6.8×7.9×12.1×3.7×
Mesh1.01×best2.6×3.7×3.0×3.4×
Ping-pong1.10×best2.1×3.7×2.8×1.94×
CPU work1.06×best1.02×1.11×1.10×1.07×
Many asks1.35×best1.45×2.1×1.76×1.21×
Spawn2.0×best6.6×5.6×4.3×1.36×
4 workers
axonactixractorkameocoercextra
Ask round trip1.05×best9.9×10.4×10.5×9.4×
Latency 100 k/sbest2.6×4.5×4.6×4.6×4.1×
Latency 1 M/sbest2.5×3.4×3.5×4.4×5.2×
Tell, one to onebest9.2×7.9×8.6×11.5×5.7×
Outside tellbest8.2×2.3×3.5×2.4×3.2×
1 KiB messagesbest6.2×1.92×1.58×6.8×1.40×
Four into one1.02×best3.7×4.7×4.1×5.6×
One into 64best9.1×1.96×3.6×2.8×3.9×
Meshbest1.07×2.3×3.2×2.7×2.5×
Ping-pongbest53.4×3.9×6.4×4.5×3.5×
CPU work1.03×best1.06×1.33×1.25×1.17×
Many asks5.9×best3.8×4.5×4.5×4.0×
Spawn7.2×best27.9×26.9×17.0×5.0×
12 workers
axonactixractorkameocoercextra
Ask round tripbest1.05×10.6×10.0×11.6×10.1×
Latency 100 k/sbest1.37×2.4×2.4×2.5×2.5×
Latency 1 M/sbest3.1×2.1×2.2×3.8×1.96×
Tell, one to onebest8.6×8.0×10.2×12.8×6.4×
Outside tellbest3.6×1.05×1.19×1.21×1.08×
1 KiB messagesbest7.5×6.6×2.1×8.8×1.76×
Four into onebest1.13×2.9×3.5×2.7×4.3×
One into 64best12.0×2.2×2.9×2.6×3.1×
Meshbest1.62×2.2×3.2×2.6×3.2×
Ping-pongbest51.9×3.7×5.9×5.0×3.6×
CPU workbest4.7×1.25×2.5×1.41×2.9×
Many asks8.0×best3.8×3.7×3.6×4.0×
Spawn12.2×best50.4×38.2×30.0×8.7×

Latency

Lower is better. Dot: median. Ring: p99. Bar: p99.9. Log scale.

Ask round trip

One caller asks one actor, one ask at a time.

1 worker10 ns100 ns1 µs10 µsaxon200 nsactix221 nsxtra231 nscoerce281 nsractor300 nskameo361 nsp99
4 workers10 ns100 ns1 µs10 µsactix211 nsaxon221 nsxtra1.98 µsractor2.08 µskameo2.2 µscoerce2.22 µsp99
12 workers10 ns100 ns1 µs10 µsaxon191 nsactix201 nskameo1.91 µsxtra1.93 µsractor2.02 µscoerce2.22 µsp99

Latency 100 k/s

16 actors told at a fixed 100 k msg/s. Time from due to handled.

1 worker100 ns1 µs10 µsaxon1.48 µsactix3.39 µscoerce5.16 µsractor5.46 µskameo5.55 µsxtra5.81 µsp99
4 workers100 ns1 µs10 µsaxon1.39 µsactix3.61 µsxtra5.74 µsractor6.3 µscoerce6.32 µskameo6.43 µsp99
12 workers100 ns1 µs10 µsaxon2.6 µsactix3.56 µsractor6.13 µskameo6.14 µscoerce6.48 µsxtra6.5 µsp99

Latency 1 M/s

16 actors told at a fixed 1 M msg/s. Time from due to handled.

1 worker100 ns1 µs10 µs100 µsaxon1.09 µsactix3.22 µskameo4.2 µscoerce4.27 µsractor4.73 µsxtra6.05 µsp99
4 workers100 ns1 µs10 µs100 µsaxon1.47 µsactix3.62 µsractor5 µskameo5.12 µscoerce6.41 µsxtra7.59 µsp99
12 workers100 ns1 µs10 µs100 µsaxon1.71 µsxtra3.36 µsractor3.51 µskameo3.77 µsactix5.35 µscoerce6.56 µsp99

Messages

Time per operation. Lower is better.

Tell, one to one per message

One actor tells one actor.

1 workeraxon13 nsxtra61 nsactix63 nsractor78 nskameo126 nscoerce157 ns
4 workersaxon16 nsxtra90 nsractor126 nskameo137 nsactix146 nscoerce184 ns
12 workersaxon14 nsxtra91 nsractor112 nsactix122 nskameo145 nscoerce181 ns

Outside tell per message

A plain thread tells 100 actors in turn.

1 workeraxon24 nsractor113 nskameo120 nscoerce144 nsactix149 nsxtra162 ns
4 workersaxon91 nsractor212 nscoerce220 nsxtra291 nskameo316 nsactix747 ns
12 workersaxon208 nsractor218 nsxtra224 nskameo248 nscoerce253 nsactix754 ns

1 KiB messages per message

One actor tells one actor 1 KiB by value.

1 workeraxon74 nsactix159 nsxtra162 nskameo250 nsractor275 nscoerce941 ns
4 workersaxon158 nsxtra222 nskameo250 nsractor303 nsactix979 nscoerce1.07 µs
12 workersaxon124 nsxtra219 nskameo261 nsractor825 nsactix933 nscoerce1.09 µs

Four into one per message

Four actors tell one actor.

1 workeraxon13 nsactix36 nsxtra65 nsractor83 nskameo130 nscoerce176 ns
4 workersactix54 nsaxon55 nsractor203 nscoerce222 nskameo254 nsxtra307 ns
12 workersaxon66 nsactix75 nscoerce182 nsractor193 nskameo229 nsxtra287 ns

One into 64 per message

One actor tells 64 actors in turn.

actix: from 4 workers, the actors are on different Arbiters (threads).

1 workeraxon20 nsactix44 nsxtra72 nsractor132 nskameo154 nscoerce236 ns
4 workersaxon44 nsractor87 nscoerce126 nskameo161 nsxtra174 nsactix405 ns
12 workersaxon61 nsractor132 nscoerce156 nskameo174 nsxtra191 nsactix733 ns

Mesh per message

1000 actors tell random others.

1 workeractix66 nsaxon66 nsractor169 nscoerce196 nsxtra226 nskameo240 ns
4 workersaxon39 nsactix42 nsractor89 nsxtra95 nscoerce106 nskameo124 ns
12 workersaxon21 nsactix34 nsractor48 nscoerce55 nskameo68 nsxtra69 ns

Ping-pong per round trip

Two actors, one message in flight.

actix: from 4 workers, the two actors are on different Arbiters (threads).

1 workeractix95 nsaxon105 nsxtra185 nsractor203 nscoerce263 nskameo357 ns
4 workersaxon106 nsxtra369 nsractor410 nscoerce479 nskameo684 nsactix5.67 µs
12 workersaxon101 nsxtra367 nsractor376 nscoerce505 nskameo593 nsactix5.25 µs

CPU work per message

One actor tells 64 actors; about 2 µs of work each.

1 workeractix1.82 µsractor1.86 µsaxon1.92 µsxtra1.94 µscoerce2 µskameo2.02 µs
4 workersactix492 nsaxon507 nsractor522 nsxtra576 nscoerce617 nskameo652 ns
12 workersaxon185 nsractor231 nscoerce261 nskameo468 nsxtra531 nsactix872 ns

Many asks per ask

1000 callers ask 16 actors.

1 workeractix95 nsxtra115 nsaxon128 nsractor138 nscoerce167 nskameo202 ns
4 workersactix22 nsractor84 nsxtra88 nskameo98 nscoerce100 nsaxon130 ns
12 workersactix15 nscoerce55 nskameo56 nsractor58 nsxtra60 nsaxon121 ns

Actors

Time per actor, and memory per actor. Lower is better.

Spawn per actor

Spawn 100 k actors, one message each.

1 workeractix529 nsxtra718 nsaxon1.06 µscoerce2.25 µskameo2.96 µsractor3.5 µs
4 workersactix155 nsxtra778 nsaxon1.12 µscoerce2.63 µskameo4.17 µsractor4.32 µs
12 workersactix94 nsxtra818 nsaxon1.15 µscoerce2.83 µskameo3.59 µsractor4.74 µs

Memory per actor

1 workerxtra793 Bactix927 Baxon1.53 KiBcoerce2.3 KiBractor6.35 KiBkameo6.71 KiB
4 workersxtra726 Bactix858 Baxon1.5 KiBcoerce1.6 KiBractor6.37 KiBkameo6.55 KiB
12 workersxtra812 Bactix875 Bcoerce1.31 KiBaxon1.52 KiBractor6.37 KiBkameo6.55 KiB

Scaling

Million operations per second at each worker count. Higher is better.

Tell, one to one0204060801412workersaxonxtraractoractixkameocoerceM/s
Outside tell02040601412workersaxonractorxtrakameocoerceactixM/s
1 KiB messages0510151412workersaxonxtrakameoractoractixcoerceM/s
Four into one0204060801412workersaxonactixcoerceractorkameoxtraM/s
One into 6402040601412workersaxonractorcoercekameoxtraactixM/s
Mesh02040601412workersaxonactixractorcoercekameoxtraM/s
Ping-pong0510151412workersaxonxtraractorcoercekameoactixM/s
CPU work02461412workersaxonractorcoercekameoxtraactixM/s
Many asks0204060801412workersactixcoercekameoractorxtraaxonM/s