Skip to content

Signal Benchmarks

Performance is a core focus of Rimitive. We regularly benchmark against other popular reactive libraries to ensure competitive performance.

These benchmarks measure core signal operations like reading, writing, and propagating changes through dependency graphs.

Last run:February 2, 2026 at 03:19 AM

Commit:c1a06ef

System:Apple M1 Max (10 cores, 64GB RAM)

Node:v25.2.1 on darwin/arm64

🥇 Gold, 🥈 Silver, and 🥉 Bronze indicate 1st, 2nd, and 3rd place. Results within 5% of each other are considered equivalent (≈1x) and share the ranking.

These are micro-benchmarks measuring raw signal operations. In practice, all three libraries are extremely fast and nearly neck-and-neck — the margins are small. Rimitive, Preact Signals, and Alien Signals all deliver best-in-class performance suitable for demanding applications.

Batch Updates

Variant🥈Rimitive Signals🥇Preact Signals🥉Alien Signals
signals=102.92 ms2.64 ms (0.90x) 3.70 ms (1.27x)
signals=205.63 ms4.84 ms (0.86x) 6.89 ms (1.22x)
signals=4010.47 ms9.15 ms (0.87x) 13.09 ms (1.25x)
signals=102.95 ms2.86 ms (≈1x) 4.11 ms (1.39x)
signals=205.64 ms5.25 ms (0.93x) 7.77 ms (1.38x)
signals=4010.47 ms9.99 ms (≈1x) 14.74 ms (1.41x)

Chain Deep

Variant🥇Rimitive Signals🥈Preact Signals🥇Alien Signals
depth=102.48 ms2.32 ms (0.94x) 2.49 ms (≈1x)
depth=205.00 ms4.99 ms (≈1x) 4.96 ms (≈1x)
depth=5012.62 ms15.17 ms (1.20x) 12.24 ms (≈1x)
depth=10024.64 ms30.42 ms (1.23x) 24.71 ms (≈1x)

Chain Shallow

Variant🥈Rimitive Signals🥇Preact Signals🥈Alien Signals
width=103.35 ms2.97 ms (0.89x) 3.05 ms (0.91x)
width=207.68 ms6.51 ms (0.85x) 7.40 ms (≈1x)
width=5018.43 ms16.21 ms (0.88x) 17.67 ms (≈1x)
width=10036.48 ms32.08 ms (0.88x) 34.99 ms (≈1x)

Conditional

Variant🥇Rimitive Signals🥇Preact Signals🥇Alien Signals
branches=227.37 ms28.03 ms (≈1x) 28.05 ms (≈1x)
branches=428.28 ms28.15 ms (≈1x) 29.27 ms (≈1x)
branches=829.42 ms28.87 ms (≈1x) 30.70 ms (≈1x)

Deep Wide

Variant🥉Rimitive Signals🥈Preact Signals🥇Alien Signals
size=small56.54 µs57.83 µs (≈1x) 64.50 µs (1.14x)
size=medium89.33 µs82.29 µs (0.92x) 78.71 µs (0.88x)
size=large89.50 µs82.71 µs (0.92x) 79.33 µs (0.89x)

Diamond

Variant🥈Rimitive Signals🥇Preact Signals🥉Alien Signals
diamonds=15.76 ms6.56 ms (1.14x) 6.32 ms (1.10x)
diamonds=210.42 ms9.20 ms (0.88x) 10.56 ms (≈1x)
diamonds=312.97 ms11.60 ms (0.89x) 13.31 ms (≈1x)
diamonds=415.33 ms13.74 ms (0.90x) 16.65 ms (1.09x)

Fan In

Variant🥈Rimitive Signals🥇Preact Signals🥉Alien Signals
sources=1010.08 ms8.34 ms (0.83x) 11.89 ms (1.18x)
sources=2524.46 ms21.68 ms (0.89x) 29.82 ms (1.22x)
sources=5047.69 ms42.95 ms (0.90x) 58.30 ms (1.22x)
sources=100105.37 ms85.01 ms (0.81x) 115.34 ms (1.09x)

Fan Out

Variant🥉Rimitive Signals🥇Preact Signals🥈Alien Signals
sources=104.92 ms5.56 ms (1.13x) 4.56 ms (0.93x)
sources=2512.82 ms12.48 ms (≈1x) 12.60 ms (≈1x)
sources=5025.34 ms24.79 ms (≈1x) 24.84 ms (≈1x)
sources=10050.59 ms49.27 ms (≈1x) 49.40 ms (≈1x)
sources=200122.78 ms102.77 ms (0.84x) 104.30 ms (0.85x)
  • Benchmarks run using mitata with garbage collection enabled
  • Each benchmark runs multiple iterations to ensure statistical significance
  • Results show median time per operation (lower is better)
  • Ratios compare against Rimitive (1.00x = same speed)