diff --git a/Cargo.toml b/Cargo.toml index d2fc979..dbbb6f0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,7 +25,17 @@ codegen-units = 1 [[bench]] name = "primes" harness = false - + [[bench]] name = "multi_scheduler" harness = false + +[[bench]] +name = "general" +harness = false + +[[bench]] +name = "smarm_favored" +harness = false + + diff --git a/benches/baseline.json b/benches/baseline.json index 0958bba..fbe9ccd 100644 --- a/benches/baseline.json +++ b/benches/baseline.json @@ -2,223 +2,185 @@ "chained_spawn": { "smarm 1-thread": { "result": 1000, - "median": 8637, - "min": 8553, - "max": 8933 + "median": 9763, + "min": 8852, + "max": 10520 + }, + "smarm 24-thread": { + "result": 1000, + "median": 23562, + "min": 20515, + "max": 24398 }, "tokio current_thread": { "result": 1000, - "median": 124, - "min": 124, - "max": 153 + "median": 70, + "min": 61, + "max": 75 }, "tokio multi-thread": { "result": 1000, - "median": 188, - "min": 183, - "max": 229 + "median": 187, + "min": 158, + "max": 228 } }, "yield_many": { "smarm 1-thread": { "result": 200000, - "median": 41622, - "min": 41063, - "max": 44973 + "median": 21704, + "min": 20353, + "max": 22053 + }, + "smarm 24-thread": { + "result": 200000, + "median": 180752, + "min": 148576, + "max": 187771 }, "tokio current_thread": { "result": 200000, - "median": 15085, - "min": 15013, - "max": 15274 + "median": 5816, + "min": 5567, + "max": 6278 }, "tokio multi-thread": { "result": 200000, - "median": 15964, - "min": 15880, - "max": 17959 + "median": 8259, + "min": 7760, + "max": 9610 } }, "fan_out_compute": { "smarm 1-thread": { "result": 33860, - "median": 29727, - "min": 29491, - "max": 31634 + "median": 14009, + "min": 13834, + "max": 14274 + }, + "smarm 24-thread": { + "result": 33860, + "median": 2839, + "min": 2702, + "max": 3019 }, "tokio current_thread": { "result": 33860, - "median": 28503, - "min": 28391, - "max": 28866 + "median": 13083, + "min": 12634, + "max": 15737 }, "tokio multi-thread": { "result": 33860, - "median": 34542, - "min": 34396, - "max": 36111 + "median": 1538, + "min": 1434, + "max": 2201 } }, "ping_pong_oneshot": { "smarm 1-thread": { "result": 1000, - "median": 16848, - "min": 16633, - "max": 17301 + "median": 18409, + "min": 16381, + "max": 21858 + }, + "smarm 24-thread": { + "result": 1000, + "median": 44596, + "min": 41804, + "max": 48324 }, "tokio current_thread": { "result": 1000, - "median": 879, - "min": 868, - "max": 973 + "median": 494, + "min": 465, + "max": 602 }, "tokio multi-thread": { "result": 1000, - "median": 4328, - "min": 4223, - "max": 4461 - } - }, - "spawn_storm_busy": { - "smarm 1-thread": { - "result": 10000, - "median": 130058, - "min": 126790, - "max": 134475 - }, - "tokio current_thread": { - "result": 10000, - "median": 2772, - "min": 2641, - "max": 4367 - }, - "tokio multi-thread": { - "result": 10000, - "median": 7462, - "min": 4469, - "max": 12892 - } - }, - "mpsc_contention": { - "smarm 1-thread": { - "result": 320000, - "median": 9260, - "min": 9095, - "max": 10081 - }, - "tokio current_thread": { - "result": 320000, - "median": 17570, - "min": 17213, - "max": 18276 - }, - "tokio multi-thread": { - "result": 320000, - "median": 17593, - "min": 17452, - "max": 19564 - } - }, - "many_timers": { - "smarm 1-thread": { - "result": 10000, - "median": 135806, - "min": 132573, - "max": 141651 - }, - "tokio current_thread": { - "result": 10000, - "median": 14462, - "min": 13555, - "max": 15457 - }, - "tokio multi-thread": { - "result": 10000, - "median": 15011, - "min": 14655, - "max": 15368 - } - }, - "multi_thread_scaling": { - "smarm 1-thread": { - "result": 33860, - "median": 30029, - "min": 29720, - "max": 31351 - }, - "tokio multi 1-thread": { - "result": 33860, - "median": 28983, - "min": 28908, - "max": 29323 + "median": 10907, + "min": 9582, + "max": 12430 } }, "deep_recursion": { "smarm 1-thread": { "result": 1, - "median": 83, - "min": 78, - "max": 587 + "median": 123, + "min": 108, + "max": 169 + }, + "smarm 24-thread": { + "result": 1, + "median": 633, + "min": 558, + "max": 783 }, "tokio current_thread": { "result": 1, - "median": 25, - "min": 25, - "max": 33 + "median": 12, + "min": 11, + "max": 14 }, "tokio multi-thread": { "result": 1, - "median": 59, - "min": 47, - "max": 205 + "median": 52, + "min": 42, + "max": 55 } }, "yield_in_hot_loop": { "smarm 1-thread": { "result": 1000000, - "median": 188753, - "min": 187007, - "max": 194366 + "median": 82273, + "min": 81870, + "max": 86041 }, "tokio current_thread": { "result": 1000000, - "median": 153929, - "min": 152712, - "max": 158749 + "median": 75353, + "min": 71841, + "max": 77573 } }, "uncontended_channel": { "smarm 1-thread": { "result": 1000000, - "median": 26811, - "min": 26498, - "max": 29069 + "median": 9390, + "min": 9331, + "max": 12504 }, "tokio current_thread": { "result": 1000000, - "median": 51888, - "min": 51530, - "max": 52708 + "median": 17007, + "min": 16933, + "max": 17657 } }, "catch_unwind_panics": { "smarm 1-thread": { "result": 10000, - "median": 142215, - "min": 140189, - "max": 143570 + "median": 144807, + "min": 138473, + "max": 153664 + }, + "smarm 24-thread": { + "result": 10000, + "median": 267812, + "min": 229587, + "max": 288329 }, "tokio current_thread": { "result": 10000, - "median": 682295, - "min": 670281, - "max": 700774 + "median": 11084, + "min": 10904, + "max": 12041 }, "tokio multi-thread": { "result": 10000, - "median": 662688, - "min": 641453, - "max": 681868 + "median": 6029, + "min": 5054, + "max": 7216 } } } \ No newline at end of file diff --git a/benches/smarm_favored.rs b/benches/smarm_favored.rs index 2659558..ed39e6d 100644 --- a/benches/smarm_favored.rs +++ b/benches/smarm_favored.rs @@ -272,6 +272,8 @@ fn bench_panic_smarm(threads: usize) -> (u64, u128) { let err = Arc::new(AtomicU64::new(0)); let ok2 = ok.clone(); let err2 = err.clone(); + let prev_hook = std::panic::take_hook(); + std::panic::set_hook(Box::new(|_| {})); let start = Instant::now(); smarm::runtime::init(bench_cfg(threads)).run(move || { let mut handles = Vec::new(); @@ -289,6 +291,7 @@ fn bench_panic_smarm(threads: usize) -> (u64, u128) { } } }); + std::panic::set_hook(prev_hook); let total = ok.load(Ordering::Relaxed) + err.load(Ordering::Relaxed); (total, start.elapsed().as_micros()) } @@ -299,6 +302,8 @@ fn bench_panic_tokio_current() -> (u64, u128) { let ok2 = ok.clone(); let err2 = err.clone(); let rt = tokio::runtime::Builder::new_current_thread().build().unwrap(); + let prev_hook = std::panic::take_hook(); + std::panic::set_hook(Box::new(|_| {})); let start = Instant::now(); let local = tokio::task::LocalSet::new(); local.block_on(&rt, async move { @@ -317,6 +322,7 @@ fn bench_panic_tokio_current() -> (u64, u128) { } } }); + std::panic::set_hook(prev_hook); let total = ok.load(Ordering::Relaxed) + err.load(Ordering::Relaxed); (total, start.elapsed().as_micros()) } @@ -330,6 +336,8 @@ fn bench_panic_tokio_multi() -> (u64, u128) { .worker_threads(available_threads()) .build() .unwrap(); + let prev_hook = std::panic::take_hook(); + std::panic::set_hook(Box::new(|_| {})); let start = Instant::now(); rt.block_on(async move { let mut handles = Vec::new(); @@ -347,6 +355,7 @@ fn bench_panic_tokio_multi() -> (u64, u128) { } } }); + std::panic::set_hook(prev_hook); let total = ok.load(Ordering::Relaxed) + err.load(Ordering::Relaxed); (total, start.elapsed().as_micros()) }