perf: optimize Fut.for_ a bit

remove intermediate array.
This commit is contained in:
Simon Cruanes 2023-07-10 11:00:34 -04:00
parent 0f4e115bc0
commit 6c73afbe5b
No known key found for this signature in database
GPG key ID: EBFFF6F283F3A2B4

View file

@ -308,10 +308,12 @@ let wait_list (a : _ t list) : unit t =
join_container_ a ~iter:List.iter ~len:List.length ~map:(fun _f _ -> ())
let for_ ~on n f : unit t =
let futs = Array.init n (fun i -> spawn ~on (fun () -> f i)) in
join_container_
~len:(fun () -> n)
~iter:(fun f () -> Array.iter f futs)
~iter:(fun yield () ->
for i = 0 to n - 1 do
yield (spawn ~on (fun () -> f i))
done)
~map:(fun _f () -> ())
()