are_we_fast_yet/are_we_fast_yet.fz
# fz -sourceDirs=<this dir> are_we_fast_yet.fz
benchmarks =>
if envir.args.count != 4
say "usage: benchmarks [name] iterations inner_iterations"
say "example: benchmarks 'name' 10 10"
else
name := envir.args.drop(1).first
iterations := envir.args.drop(2).first.parse_i32.val
inner_iterations := envir.args.drop(3).first.parse_i32.val
run_benchmark(b ()->unit) is
start := time.nano.read
for i in 1..iterations do
inner_start := time.nano.read
for j in 1..inner_iterations do
b
say "$name: iterations=1 runtime: {((time.nano.read - inner_start).as_f64 / 1E3).floor}us"
total := (time.nano.read - start).as_f64 / 1E3
say "$name: iterations=$iterations average: {(total / iterations.as_f64).floor}us total: {total.floor}us"
say
say
say "Total Runtime: {total.floor}us"
if name = "Permute"
run_benchmark (()->_:=permute)
else if name = "Towers"
run_benchmark (()->_:=towers)
else if name = "Storage"
run_benchmark (()->_:=storage)
else if name = "Bounce"
run_benchmark (()->_:=bounce)
else if name = "List"
run_benchmark (()->_:=awfy_list)
else if name = "Mandelbrot"
run_benchmark (()->_:=mandelbrot)
else if name = "Queens"
run_benchmark (()->_:=queens)
else if name = "Sieve"
run_benchmark (()->_:=sieve)
else
panic "legal names are: Permute, Towers, Storage"
unit
last changed: 2023-11-14