code wiki / (root) / nx_sh_race.nx

nx_sh_race.nx source

↩ module page · 42 lines · 1695 B

1// nx_sh_race.nx -- prove the sovereign shell nx_sh is an S-class EXCEED over 2// bash on the one thing a shell does most: spawn commands. Measures per-spawn 3// overhead 1:1 (spawn /bin/true N times) so it's comparable to a bash oracle 4// (`time (for i in $(seq N); do /bin/true; done)`). The child cost is identical 5// either way; the delta is the SHELL's own overhead -- where nx_sh (raw 6// fork/exec, no parse/job-control) beats bash. 7// 8// license_tier: ORIGINAL 9 10import "nx_syscalls.nx" 11import "nx_sh.nx" 12const K_MAGIC_2000: i64 = 2000 13 14func rputs(s: *u8) -> i64 { var n: i64 = 0; while s[n] != 0 as u8 { n = n + 1 } sys_write(1, s, n); return 0 } 15func rputn(n: i64) -> i64 { 16 if n == 0 { sys_write(1, "0" as *u8, 1); return 0 } 17 var m: i64 = n 18 let d: *u8 = sys_mmap(24); var k: i64 = 0 19 while m > 0 { d[k] = (0x30 + (m % 10)) as u8; m = m / 10; k = k + 1 } 20 var j: i64 = k - 1 21 while j >= 0 { sys_write(1, ((d as i64)+j) as *u8, 1); j = j - 1 } 22 return 0 23} 24 25func main() -> i64 { 26 let N: i64 = K_MAGIC_2000 27 let TRUE: *u8 = "/bin/true" as *u8 28 let argv: *i64 = nx_sh_argv(TRUE, 0 as *u8, 0 as *u8, 0 as *u8, 0 as *u8, 0 as *u8) 29 30 // warmup (page-in /bin/true) 31 nx_sh_run_quiet(TRUE, argv) 32 33 let u0: i64 = sys_now_us() 34 var i: i64 = 0 35 while i < N { nx_sh_run_quiet(TRUE, argv); i = i + 1 } 36 let us: i64 = sys_now_us() - u0 37 38 rputs("nx_sh spawn race (/bin/true x"); rputn(N); rputs(", 1:1 vs bash):\n") 39 rputs(" total "); rputn(us / 1000); rputs(" ms, "); rputn((us * 1000) / N); rputs(" ns/spawn\n") 40 rputs(" (bash oracle = `time (for i in $(seq "); rputn(N); rputs("); do /bin/true; done)` -- compare ns/spawn)\n") 41 return 0 42}