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}