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}