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.
41 lines
2.6 KiB
Plaintext
41 lines
2.6 KiB
Plaintext
smarm smarm-favored benchmarks
|
||
available parallelism: 1 threads
|
||
ITERS=15 (+1 warmup, discarded)
|
||
RECURSE_DEPTH=500, HOT_YIELDS=500000×2, UNCONT_MSGS=1000000, PANIC_TASKS=10000
|
||
|
||
================================================================================
|
||
deep_recursion: depth 500
|
||
================================================================================
|
||
runtime | result | median µs | min µs | max µs
|
||
--------------------------------------------------------------------------------
|
||
smarm 1-thread | 1 | 62 | 59 | 682
|
||
smarm 1-thread | 1 | 71 | 61 | 210
|
||
tokio current_thread | 1 | 22 | 22 | 23
|
||
tokio multi-thread | 1 | 44 | 38 | 79
|
||
|
||
================================================================================
|
||
yield_in_hot_loop: 2 actors × 500000 yields (single thread)
|
||
================================================================================
|
||
runtime | result | median µs | min µs | max µs
|
||
--------------------------------------------------------------------------------
|
||
smarm 1-thread | 1000000 | 182177 | 180380 | 184410
|
||
tokio current_thread | 1000000 | 138335 | 136097 | 141196
|
||
|
||
================================================================================
|
||
uncontended_channel: 1→1, 1000000 msgs (single thread)
|
||
================================================================================
|
||
runtime | result | median µs | min µs | max µs
|
||
--------------------------------------------------------------------------------
|
||
smarm 1-thread | 1000000 | 31473 | 28719 | 33113
|
||
tokio current_thread | 1000000 | 51925 | 51205 | 53043
|
||
|
||
================================================================================
|
||
catch_unwind_panics: 10000 tasks, 50% panic
|
||
================================================================================
|
||
runtime | result | median µs | min µs | max µs
|
||
--------------------------------------------------------------------------------
|
||
smarm 1-thread | 10000 | 112306 | 109702 | 119859
|
||
smarm 1-thread | 10000 | 114305 | 112030 | 121326
|
||
tokio current_thread | 10000 | 151443 | 150949 | 153800
|
||
tokio multi-thread | 10000 | 161344 | 160385 | 167573
|