Skip to content

Commit d0652ad

Browse files
committed
tweak
1 parent 63bc0c3 commit d0652ad

File tree

1 file changed

+21
-14
lines changed

1 file changed

+21
-14
lines changed

jscomp/ounit_tests/ounit_bal_tree_tests.ml

+21-14
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ let (=~) = OUnit.assert_equal
55

66
module Set_poly = struct
77
include Set_int
8-
8+
let of_sorted_list xs = Array.of_list xs |> of_sorted_array
99
let of_array l =
1010
Ext_array.fold_left l empty add
1111
end
@@ -86,21 +86,28 @@ let compare_ident x y =
8686
if b <> 0 then b
8787
else compare (x.flags : int) y.flags
8888

89-
let rec add x (tree : _ Set_gen.t) : _ Set_gen.t =
90-
match tree with
89+
90+
let rec add (tree : _ Set_gen.t) x = match tree with
9191
| Empty -> Set_gen.singleton x
92-
| Node{l; v; r} as t ->
92+
| Leaf v ->
9393
let c = compare_ident x v in
94-
if c = 0 then t else
95-
if c < 0 then Set_gen.internal_bal (add x l) v r else Set_gen.internal_bal l v (add x r)
96-
97-
let rec mem x (tree : _ Set_gen.t) =
98-
match tree with
99-
| Empty -> false
100-
| Node {l; v; r} ->
94+
if c = 0 then tree else
95+
if c < 0 then
96+
Set_gen.unsafe_create v (Set_gen.singleton x) Set_gen.empty 2
97+
else
98+
Set_gen.unsafe_create x (Set_gen.singleton v) Set_gen.empty 2
99+
| Node {l; v; r} as t ->
101100
let c = compare_ident x v in
102-
c = 0 || mem x (if c < 0 then l else r)
101+
if c = 0 then t else
102+
if c < 0 then Set_gen.internal_bal (add l x ) v r else Set_gen.internal_bal l v (add r x )
103103

104+
let rec mem (tree : _ Set_gen.t) x = match tree with
105+
| Empty -> false
106+
| Leaf v -> compare_ident x v = 0
107+
| Node{l; v; r} ->
108+
let c = compare_ident x v in
109+
c = 0 || mem (if c < 0 then l else r) x
110+
104111
module Ident_set2 = Set.Make(struct type t = ident
105112
let compare = compare_ident
106113
end)
@@ -139,10 +146,10 @@ let bench () =
139146
Ounit_tests_util.time "poly set (specialized)" begin fun _ ->
140147
let v = ref Set_gen.empty in
141148
for i = 0 to times do
142-
v := add {stamp = i ; name = "name"; flags = -1 } !v
149+
v := add !v {stamp = i ; name = "name"; flags = -1 }
143150
done;
144151
for i = 0 to times do
145-
ignore @@ mem {stamp = i; name = "name" ; flags = -1} !v
152+
ignore @@ mem !v {stamp = i; name = "name" ; flags = -1}
146153
done
147154

148155
end ;

0 commit comments

Comments
 (0)