Runtime performance
Speed, with
process isolation.
Change the payload. Compare the runtime and the process layout.
Native multi-process lane
One measured shared-memory crossing
Round-trip latency
Median · lower is faster
Showing round-trip medians for a 64 B payload.
| Runtime configuration | Logarithmic position | Median latency |
|---|---|---|
| Cerulion nativeMulti-process · free run | 4.07 µsTwo workers | |
| ROS 2Multi-process · defaults | 311.11 µsThree processes | |
| Cerulion nativeSingle-process | 2.69 µsOne process | |
| ROS 2Composed + intra-process | 24.64 µsOne process |
Logarithmic scale. Each interval is 10× longer.
All measured values
| Configuration | 64 B, selected payload | 1 MiB | 16 MiB |
|---|---|---|---|
| Cerulion nativeMulti-process · free run | 4.07 | 4.08 | 4.43 |
| ROS 2Multi-process · defaults | 311.11 | 10,951.63 | 103,853.93 |
| Cerulion nativeSingle-process | 2.69 | 2.76 | 2.8 |
| ROS 2Composed + intra-process | 24.64 | 29.79 | 33.42 |
The measurement
Same campaign.
Different configurations.
One publisher/subscriber pair at a nominal 100 Hz. Median round-trip latency with payload fill excluded. Linux x86-64, September 16, 2026.
- Cerulion multi-process
- Two workers, one measured crossing. Free run enabled; lockstep is the shipped default.
- ROS 2 defaults
- Jazzy,
rmw_fastrtps_cpp, plain publish and typed callback. Three processes, two crossings. - Single-process lanes
- Cerulion single-process and ROS 2 composed. ROS 2 uses one executor with intra-process communication enabled.
- Recording
- Flashback enabled for both native Cerulion lanes. The ROS 2 lanes have no native recorder.
Tail latency and source record
Five runs × 2,000 samples per size. The chart shows the median of the five run medians. Native multi-process p99 is 6.61–10.45 µs across the three sizes, pooled over 10,000 samples per size.
24-core Intel Core Ultra 9 285K, performance governor, no RT tuning. The offered load allows requests to overlap when a round trip exceeds 10 ms.
One fixed100 campaign, two builds: a68a2a987 for native multi-process; 68a0d6196 for the other lanes. Read the public campaign summary