Skip to content

Commit a5ea38c

Browse files
committed
Bench (Bundle|Flock).join_after memory usage
1 parent ee47e67 commit a5ea38c

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

bench/bench_memory.ml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)