code wiki / (root) / nx_esign_probe_test.nx

nx_esign_probe_test.nx source

↩ module page · 54 lines · 1750 B

1// nx_esign_probe_test.nx -- cost probe: how long do N esign registry ops actually take? 2// Prints elapsed microseconds after 10 writes and 10 reads so the per-op cost is a MEASURED number 3// rather than a guess. Disposable diagnostic for debt 1785517694. 4// license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0 5 6import "nx_esign_lib.nx" 7 8func pb_puts(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 9func pb_putn(v: i64) -> i64 { 10 let t: *u8 = sys_mmap(32) 11 var o: i64 = 0 12 var m: i64 = v 13 if m < 0 { t[o] = 45 as u8; o = o + 1; m = 0 - m } 14 let d: *u8 = sys_mmap(32) 15 var k: i64 = 0 16 if m == 0 { d[0] = 48 as u8; k = 1 } 17 while m > 0 { d[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } 18 var i: i64 = 0 19 while i < k { t[o] = d[k - 1 - i]; o = o + 1; i = i + 1 } 20 sys_write(1, t, o) 21 return 0 22} 23 24func main(argc: i64, argv: *i64) -> i64 { 25 let nonce: i64 = sys_now_us() 26 let pfx: *u8 = sys_mmap(256) 27 var o: i64 = mt_catcopy(pfx, 0, "knowledge/store/esprobe" as *u8) 28 o = mt_catn(pfx, o, nonce) 29 pfx[o] = 45 as u8 30 o = o + 1 31 pfx[o] = 0 as u8 32 let sig: *u8 = "S" as *u8 33 34 let t0: i64 = sys_now_us() 35 var i: i64 = 0 36 while i < 10 { 37 es_set(pfx, sig, "intent" as *u8, "yes" as *u8) 38 i = i + 1 39 } 40 let t1: i64 = sys_now_us() 41 var acc: i64 = 0 42 var j: i64 = 0 43 while j < 10 { 44 acc = acc + es_yes(pfx, sig, "intent" as *u8) 45 j = j + 1 46 } 47 let t2: i64 = sys_now_us() 48 49 pb_puts("ESIGN-PROBE writes_us=" as *u8); pb_putn(t1 - t0) 50 pb_puts(" reads_us=" as *u8); pb_putn(t2 - t1) 51 pb_puts(" reads_ok=" as *u8); pb_putn(acc) 52 pb_puts("\n" as *u8) 53 return 0 54}