Two compile fixes: - tokio_favored.rs bench_mpsc_smarm: consumer spawn closure returned u64 via bare 'count' tail expression; smarm::Runtime::run() requires FnOnce()->(). Fixed to 'let _ = count;'. Same fix on the consumer.join() call site. - smarm_favored.rs bench_unc_smarm: same pattern, same fix. Baseline run: Intel Xeon @ 2.80GHz, 1 core, kernel 6.18.5, rustc 1.95.0, smarm 0.3.0, no RUSTFLAGS. Single-CPU sandbox — N-thread rows identical to 1-thread; scaling sweep limited to 1 thread. Notable findings: - deep_recursion: tokio wins (22 vs 62 us); mmap stack alloc cost dominates for single-use actors at depth 500. - yield_in_hot_loop: tokio wins (138 vs 182 ms); smarm mutex overhead on yield_now exceeds expected naked-switch advantage on 1 CPU. - mpsc_contention/uncontended_channel/catch_unwind_panics: smarm wins as predicted. - spawn_storm_busy: smarm 47x slower; global mutex saturated by bg yielders.
43 lines
2.8 KiB
Plaintext
43 lines
2.8 KiB
Plaintext
smarm tokio-favored benchmarks
|
||
available parallelism: 1 threads
|
||
ITERS=15 (+1 warmup, discarded)
|
||
STORM_BACKGROUND=8, STORM_SPAWN=10000, MPSC=32×10000, TIMER_ACTORS=10000 (1–10 ms), SCALING_N=400000/64
|
||
|
||
================================================================================
|
||
spawn_storm_busy: 8 bg yielders + 10000 zero-work spawns
|
||
================================================================================
|
||
runtime | result | median µs | min µs | max µs
|
||
--------------------------------------------------------------------------------
|
||
smarm 1-thread | 10000 | 105512 | 102322 | 120552
|
||
smarm 1-thread | 10000 | 107113 | 104048 | 112377
|
||
tokio current_thread | 10000 | 2222 | 2124 | 2506
|
||
tokio multi-thread | 10000 | 4546 | 3833 | 7305
|
||
|
||
================================================================================
|
||
mpsc_contention: 32 producers × 10000 msgs → 1 consumer
|
||
================================================================================
|
||
runtime | result | median µs | min µs | max µs
|
||
--------------------------------------------------------------------------------
|
||
smarm 1-thread | 320000 | 10456 | 10331 | 10639
|
||
smarm 1-thread | 320000 | 10395 | 9201 | 10549
|
||
tokio current_thread | 320000 | 17348 | 16639 | 19061
|
||
tokio multi-thread | 320000 | 18628 | 17499 | 19298
|
||
|
||
================================================================================
|
||
many_timers: 10000 actors sleeping 1–10 ms
|
||
================================================================================
|
||
runtime | result | median µs | min µs | max µs
|
||
--------------------------------------------------------------------------------
|
||
smarm 1-thread | 10000 | 120242 | 116239 | 127200
|
||
smarm 1-thread | 10000 | 121023 | 113997 | 127826
|
||
tokio current_thread | 10000 | 13581 | 13182 | 14415
|
||
tokio multi-thread | 10000 | 14266 | 14084 | 14843
|
||
|
||
================================================================================
|
||
multi_thread_scaling: primes in [2, 400000) across 64 workers
|
||
================================================================================
|
||
runtime | result | median µs | min µs | max µs
|
||
--------------------------------------------------------------------------------
|
||
smarm 1-thread | 33860 | 19852 | 19601 | 22679
|
||
tokio multi 1-thread | 33860 | 19638 | 18994 | 20102
|