mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-05 19:00:31 -05:00
test: make TLS test faster (do not yield as much)
This commit is contained in:
parent
3e105434d9
commit
30f987d1bf
1 changed files with 19 additions and 19 deletions
|
|
@ -2,28 +2,28 @@ module Test = (val Containers_testlib.make ~__FILE__ ())
|
|||
open Test
|
||||
module L = CCLocal_storage;;
|
||||
|
||||
t @@ fun () ->
|
||||
let var = L.create () in
|
||||
t (fun () ->
|
||||
let var = L.create () in
|
||||
|
||||
let sum_of_res = CCAtomic.make 0 in
|
||||
let n = 1_000 in
|
||||
let sum_of_res = CCAtomic.make 0 in
|
||||
let n = 10_000 in
|
||||
|
||||
let run1 () =
|
||||
L.with_ var 0 @@ fun () ->
|
||||
for _i = 1 to n do
|
||||
let x = L.get_exn var in
|
||||
Thread.yield ();
|
||||
L.set var (x + 1)
|
||||
done;
|
||||
ignore (CCAtomic.fetch_and_add sum_of_res (L.get_exn var) : int)
|
||||
in
|
||||
let run1 () =
|
||||
L.with_ var 0 @@ fun () ->
|
||||
for _i = 1 to n do
|
||||
let x = L.get_exn var in
|
||||
if _i mod 50 = 0 then Thread.yield ();
|
||||
L.set var (x + 1)
|
||||
done;
|
||||
ignore (CCAtomic.fetch_and_add sum_of_res (L.get_exn var) : int)
|
||||
in
|
||||
|
||||
let threads = Array.init 16 (fun _ -> Thread.create run1 ()) in
|
||||
Array.iter Thread.join threads;
|
||||
let threads = Array.init 16 (fun _ -> Thread.create run1 ()) in
|
||||
Array.iter Thread.join threads;
|
||||
|
||||
assert_equal ~printer:string_of_int (n * 16) (CCAtomic.get sum_of_res);
|
||||
assert_equal ~printer:string_of_int (n * 16) (CCAtomic.get sum_of_res);
|
||||
|
||||
(* cleanup *)
|
||||
assert_equal ~printer:string_of_int 0 (L.n_entries var);
|
||||
(* cleanup *)
|
||||
assert_equal ~printer:string_of_int 0 (L.n_entries var);
|
||||
|
||||
true
|
||||
true)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue