code wiki / _hdl_build / nx_compare_growth_bench_new_20260910.nx
nx_compare_growth_bench_new_20260910.nx source
↩ module page · 39 lines · 1833 B
1import "nx_compare_growth_lib.nx"
2import "nx_gate_verdict.nx"
3const CGB_REPETITIONS: i64=3 // This fixture's declared workload; not production scheduling policy.
4func cgb_now() -> i64 {
5 let t: *i64=sys_mmap(16) as *i64
6 let rc: i64=sys_clock_gettime_mono(t)
7 let value: i64=t[0]*1000000+t[1]/1000; sys_munmap(t as *u8,16)
8 if rc<0 { return 0-1 }; return value
9}
10func cgb_run(path: *u8,nodes: i64,edges: i64,ctr: *i64) -> i64 {
11 var n: i64=0; let raw: *u8=sys_read_file(path,&n)
12 gv_check("fixture read",n>0,ctr)
13 if n<=0 { return 0 }
14 var i: i64=0
15 while i<CGB_REPETITIONS {
16 let start: i64=cgb_now()
17 let m: *CgModel=cg_parse(raw,n)
18 let end: i64=cgb_now()
19 gv_check("clock monotonic valid",(start>=0) & (end>=start),ctr)
20 gv_check("model allocated",(m as i64)>0,ctr)
21 if (m as i64)>0 {
22 gv_check("valid graph",m.error==0,ctr); gv_check("expected node count",m.exercises==nodes,ctr)
23 gv_puts("BENCH|"); gv_puts(path); gv_puts("\n"); gv_kv("input_bytes",n)
24 gv_kv("nodes",nodes); gv_kv("edges_fixture",edges); gv_kv("elapsed_us",end-start); gv_kv("iteration",i)
25 cg_free(m)
26 }
27 i=i+1
28 }
29 sys_free_file(raw,n); return 0
30}
31func main() -> i64 {
32 let ctr: *i64=gv_ctr(); gv_head("GROWTH-GRAPH-BENCH")
33 cgb_run("/tmp/cg-bench-beach-chain-20260910.plan" as *u8,68,67,ctr)
34 cgb_run("/tmp/cg-bench-max-chain-20260910.plan" as *u8,82,81,ctr)
35 cgb_run("/tmp/cg-bench-max-branch-20260910.plan" as *u8,82,81,ctr)
36 cgb_run("/tmp/cg-bench-max-dense-20260910.plan" as *u8,82,3321,ctr)
37 cgb_run("/tmp/cg-bench-scaled-chain-20260910.plan" as *u8,328,327,ctr)
38 return gv_verdict("GROWTH-GRAPH-BENCH",ctr,"parser timing on declared synthetic graph shapes; no end-to-end workflow speedup claim")
39}