def build (n : Nat) : Array Unit := Id.run <| do let mut out := #[] for _ in *...n do out := out.push () out @[noinline] def size : IO Nat := pure 50000 def bench (f : ∀ {α : Type}, α → IO Unit := fun _ => pure ()) : IO Unit := do let n ← size let arr := build n timeit "time" $ for _ in *...(1000 : Nat) do f $ #[1, 2, 3, 4].map fun ty => arr[ty]! #eval bench