Skip to content

Commit dda3994

Browse files
committed
Add separate memory usage benchmark for promises in a bundle
1 parent dfe19db commit dda3994

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

bench/bench_memory.ml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,35 @@ let run_suite ~budgetf:_ =
3535
~trend:`Lower_is_better ~description:"Memory usage"
3636
(`Float (Float.of_int (bytes / n)))
3737
end;
38+
begin
39+
Scheduler.run @@ fun () ->
40+
let open Picos_structured in
41+
Bundle.join_after @@ fun bundle ->
42+
let n = 10_000 in
43+
let bytes =
44+
measure_live_bytes @@ fun () ->
45+
let main () =
46+
while true do
47+
Control.yield ()
48+
done
49+
in
50+
for _ = 1 to n do
51+
Bundle.fork_as_promise bundle main |> ignore
52+
done;
53+
Control.yield ()
54+
in
55+
Bundle.terminate bundle;
56+
Metric.make ~metric:"memory used" ~config:"promise in a bundle"
57+
~units:"B" ~trend:`Lower_is_better ~description:"Memory usage"
58+
(`Float (Float.of_int (bytes / n)))
59+
end;
3860
begin
3961
Scheduler.run @@ fun () ->
4062
let open Picos in
4163
let open Picos_sync in
4264
let computation = Computation.create () in
65+
let (Packed main) = Fiber.get_computation (Fiber.current ()) in
66+
let _ = Computation.attach_canceler ~from:main ~into:computation in
4367
let n = 10_000 in
4468
let latch = Latch.create 1 in
4569
let bytes =

0 commit comments

Comments
 (0)