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.
🥇 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=10 | 2.92 ms | 2.64 ms
(0.90x)
| 3.70 ms
(1.27x)
|
| signals=20 | 5.63 ms | 4.84 ms
(0.86x)
| 6.89 ms
(1.22x)
|
| signals=40 | 10.47 ms | 9.15 ms
(0.87x)
| 13.09 ms
(1.25x)
|
| signals=10 | 2.95 ms | 2.86 ms
(≈1x)
| 4.11 ms
(1.39x)
|
| signals=20 | 5.64 ms | 5.25 ms
(0.93x)
| 7.77 ms
(1.38x)
|
| signals=40 | 10.47 ms | 9.99 ms
(≈1x)
| 14.74 ms
(1.41x)
|
Chain Deep
| Variant | 🥇Rimitive Signals | 🥈Preact Signals | 🥇Alien Signals |
|---|
| depth=10 | 2.48 ms | 2.32 ms
(0.94x)
| 2.49 ms
(≈1x)
|
| depth=20 | 5.00 ms | 4.99 ms
(≈1x)
| 4.96 ms
(≈1x)
|
| depth=50 | 12.62 ms | 15.17 ms
(1.20x)
| 12.24 ms
(≈1x)
|
| depth=100 | 24.64 ms | 30.42 ms
(1.23x)
| 24.71 ms
(≈1x)
|
Chain Shallow
| Variant | 🥈Rimitive Signals | 🥇Preact Signals | 🥈Alien Signals |
|---|
| width=10 | 3.35 ms | 2.97 ms
(0.89x)
| 3.05 ms
(0.91x)
|
| width=20 | 7.68 ms | 6.51 ms
(0.85x)
| 7.40 ms
(≈1x)
|
| width=50 | 18.43 ms | 16.21 ms
(0.88x)
| 17.67 ms
(≈1x)
|
| width=100 | 36.48 ms | 32.08 ms
(0.88x)
| 34.99 ms
(≈1x)
|
Conditional
| Variant | 🥇Rimitive Signals | 🥇Preact Signals | 🥇Alien Signals |
|---|
| branches=2 | 27.37 ms | 28.03 ms
(≈1x)
| 28.05 ms
(≈1x)
|
| branches=4 | 28.28 ms | 28.15 ms
(≈1x)
| 29.27 ms
(≈1x)
|
| branches=8 | 29.42 ms | 28.87 ms
(≈1x)
| 30.70 ms
(≈1x)
|
Deep Wide
| Variant | 🥉Rimitive Signals | 🥈Preact Signals | 🥇Alien Signals |
|---|
| size=small | 56.54 µs | 57.83 µs
(≈1x)
| 64.50 µs
(1.14x)
|
| size=medium | 89.33 µs | 82.29 µs
(0.92x)
| 78.71 µs
(0.88x)
|
| size=large | 89.50 µs | 82.71 µs
(0.92x)
| 79.33 µs
(0.89x)
|
Diamond
| Variant | 🥈Rimitive Signals | 🥇Preact Signals | 🥉Alien Signals |
|---|
| diamonds=1 | 5.76 ms | 6.56 ms
(1.14x)
| 6.32 ms
(1.10x)
|
| diamonds=2 | 10.42 ms | 9.20 ms
(0.88x)
| 10.56 ms
(≈1x)
|
| diamonds=3 | 12.97 ms | 11.60 ms
(0.89x)
| 13.31 ms
(≈1x)
|
| diamonds=4 | 15.33 ms | 13.74 ms
(0.90x)
| 16.65 ms
(1.09x)
|
Fan In
| Variant | 🥈Rimitive Signals | 🥇Preact Signals | 🥉Alien Signals |
|---|
| sources=10 | 10.08 ms | 8.34 ms
(0.83x)
| 11.89 ms
(1.18x)
|
| sources=25 | 24.46 ms | 21.68 ms
(0.89x)
| 29.82 ms
(1.22x)
|
| sources=50 | 47.69 ms | 42.95 ms
(0.90x)
| 58.30 ms
(1.22x)
|
| sources=100 | 105.37 ms | 85.01 ms
(0.81x)
| 115.34 ms
(1.09x)
|
Fan Out
| Variant | 🥉Rimitive Signals | 🥇Preact Signals | 🥈Alien Signals |
|---|
| sources=10 | 4.92 ms | 5.56 ms
(1.13x)
| 4.56 ms
(0.93x)
|
| sources=25 | 12.82 ms | 12.48 ms
(≈1x)
| 12.60 ms
(≈1x)
|
| sources=50 | 25.34 ms | 24.79 ms
(≈1x)
| 24.84 ms
(≈1x)
|
| sources=100 | 50.59 ms | 49.27 ms
(≈1x)
| 49.40 ms
(≈1x)
|
| sources=200 | 122.78 ms | 102.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)