code wiki / (root) / _a2a_hll_x100.nx

_a2a_hll_x100.nx source

↩ module page · 36 lines · 846 B

1// Run HLL fill 100x consecutively for amortized timing measurement. 2 3import "syscalls.nx" 4import "sketch_hll.nx" 5 6func write_b(buf: *u8, value: i64) -> i64 { 7 var i: i64 = 0 8 var v: i64 = value 9 while i < 8 { 10 buf[i] = (v & 0xFF) as u8 11 v = v >> 8 12 i = i + 1 13 } 14 return 0 15} 16 17func main() -> i64 { 18 let key_raw: *u8 = sys_mmap(8) 19 let key: *u8 = key_raw 20 var iter: i64 = 0 21 while iter < 100 { 22 let hll: *Hll = nx_hll_alloc(12, 42) 23 if hll == (0 as *Hll) { return 1 } 24 var i: i64 = 0 25 while i < 100000 { 26 write_b(key, i + 9000000) 27 nx_hll_add(hll, key, 8) 28 i = i + 1 29 } 30 let est: i64 = nx_hll_estimate(hll) 31 if est < 95000 { return 2 } 32 if est > 105000 { return 3 } 33 iter = iter + 1 34 } 35 return 0 36}