Performance

HORUS is designed for performance by default — zero-copy shared memory IPC, lock-free ring buffers, and priority-based scheduling. Most applications need no tuning.

Optimize only after your system works correctly. Premature optimization in robotics is dangerous — a fast controller that computes the wrong output is worse than a slow one that's correct.


Quick Reference

MetricHORUS (typical)ROS2 (typical)
Same-thread IPC~23 nsN/A
Cross-thread IPC (1:1)~155 ns20-50 us
Cross-process IPC~180 ns50-100 us
Scheduler tick overhead~1 us per node10-50 us per node
Node scaling (100 nodes)+14% overhead+200-400% overhead
Topic scaling (1000 topics)0% degradationSignificant

Guides

  • Optimization Guide — When and how to tune: message sizes, buffer capacities, tick rates, CPU pinning, memory layout
  • Benchmarks — Latency, throughput, and scalability measurements comparing HORUS to alternatives

What HORUS Optimizes For You

FeatureHowTunable?
IPC latencyShared memory (no serialization for same-machine)Buffer size via Topic::with_capacity()
Message passingLock-free ring bufferSlot count and size
SchedulingPriority-ordered tick loop.order(), .rate(), execution classes
Large dataPool-backed allocation (Image, PointCloud, Tensor)Pool size
Real-timeDedicated RT threads, SCHED_FIFO.budget(), .deadline(), .on_miss()

See Also