code wiki / (root) / nx_bench_stats.nx

nx_bench_stats.nx

buildroot/runtime/nx_bench_stats.nx

5245 B192 linesdepth 2pulls 2 transitivereach 5 importersview sourcekind benchtopic bench
docsdependenciesstructsconstsfunctions

about

nx_bench_stats.nx -- min/max/mean/p50/p95 stats over an i64 sample array. Substrate-honest distribution primitive. Single-point benchmarks hide variance; this primitive computes the standard min/max/p50/p95 quartet operators need to claim "Nishi runs in P ms p50 / Q ms p95". V1 ships insertion-sort + linear-pass stats. Designed for small N (10-100 samples); larger N should use a quickselect primitive (queued). The sort is in-place + destructive -- caller-supplied sample array gets sorted.

dependencies 2 imports · 5 importers

nx_syscalls.nx nx_tier.nx nx_bench_stats.nx nx_bench_dist_emit_test.nx nx_bench_dist_persist_test.nx nx_bench_scale_dist_emit_test.nx nx_bench_stats_test.nx nx_gpu_bench.nx

imports: nx_syscalls.nxnx_tier.nx

imported by: nx_bench_dist_emit_test.nxnx_bench_dist_persist_test.nxnx_bench_scale_dist_emit_test.nxnx_bench_stats_test.nxnx_gpu_bench.nx

structs

32struct NxBenchStats

consts

17const NX_BST_OK: nx_int = 0
18const NX_BST_NULL_SAMPLES: nx_int = 1
19const NX_BST_NULL_OUT: nx_int = 2
20const NX_BST_EMPTY: nx_int = 3
21const NX_BST_INVALID: nx_int = 4
22const NX_BST_N: nx_int = 5
43const NX_BST_BYTES: nx_int = 64 // 8 fields * 8

functions

24func nx_bst_v_is_valid(v: nx_int) -> nx_int
called by 1: main
45func nx_bst_new() -> *NxBenchStats
called by 5: mainmainmainmainmain calls 1: sys_mmap
63func _bst_insertion_sort(samples: *i64, n: nx_int) -> nx_int
91func nx_bench_stats_compute(samples: *i64, n: nx_int,
159func nx_bst_min(s: *NxBenchStats) -> i64
164func nx_bst_max(s: *NxBenchStats) -> i64
169func nx_bst_mean(s: *NxBenchStats) -> i64
174func nx_bst_p50(s: *NxBenchStats) -> i64
179func nx_bst_p95(s: *NxBenchStats) -> i64
184func nx_bst_stddev(s: *NxBenchStats) -> i64
189func nx_bst_n(s: *NxBenchStats) -> nx_int
called by 4: mainmainmainmain