@@ -254,4 +254,56 @@ let run_suite ~budgetf:_ =
254254 ~units: " B" ~trend: `Lower_is_better ~description: " Memory usage"
255255 (`Float (divide_up (! stack + ! heap) n))
256256 end;
257+ begin
258+ Scheduler. run @@ fun () ->
259+ let open Picos_std_structured in
260+ let n = 10_000 in
261+ let heap = ref 0 in
262+ let counter = ref n in
263+ let rec finalizers () =
264+ Bundle. join_after @@ fun _ ->
265+ decr counter;
266+ if 0 < ! counter then finalizers ()
267+ else begin
268+ heap := live_bytes () - ! heap;
269+ stack_size ()
270+ end
271+ in
272+ let stack =
273+ Flock. join_after @@ fun () ->
274+ Promise. await @@ Flock. fork_as_promise
275+ @@ fun () ->
276+ heap := live_bytes () ;
277+ finalizers ()
278+ in
279+ Metric. make ~metric: " stack and heap used" ~config: " join_after bundle"
280+ ~units: " B" ~trend: `Lower_is_better ~description: " Memory usage"
281+ (`Float (divide_up (stack + ! heap) n))
282+ end;
283+ begin
284+ Scheduler. run @@ fun () ->
285+ let open Picos_std_structured in
286+ let n = 10_000 in
287+ let heap = ref 0 in
288+ let counter = ref n in
289+ let rec finalizers () =
290+ Flock. join_after @@ fun _ ->
291+ decr counter;
292+ if 0 < ! counter then finalizers ()
293+ else begin
294+ heap := live_bytes () - ! heap;
295+ stack_size ()
296+ end
297+ in
298+ let stack =
299+ Flock. join_after @@ fun () ->
300+ Promise. await @@ Flock. fork_as_promise
301+ @@ fun () ->
302+ heap := live_bytes () ;
303+ finalizers ()
304+ in
305+ Metric. make ~metric: " stack and heap used" ~config: " join_after flock"
306+ ~units: " B" ~trend: `Lower_is_better ~description: " Memory usage"
307+ (`Float (divide_up (stack + ! heap) n))
308+ end;
257309 ]
0 commit comments