diff --git a/src/package.ml b/src/package.ml index fb7788ae..1b2d1577 100644 --- a/src/package.ml +++ b/src/package.ml @@ -1,7 +1,10 @@ open Stdune module Name = struct - include Interned.Make(struct let resize_policy = Interned.Conservative end) + include Interned.Make(struct + let initial_size = 16 + let resize_policy = Interned.Conservative + end) let of_string = make diff --git a/src/stdune/interned.ml b/src/stdune/interned.ml index af039be1..e3cfc92f 100644 --- a/src/stdune/interned.ml +++ b/src/stdune/interned.ml @@ -28,7 +28,11 @@ let new_size ~next ~size = function (next land (lnot (increment_size - 1))) + (increment_size * 2) | Greedy -> size * 2 -module Make(R : sig val resize_policy : resize_policy end) = struct +module Make(R : sig + val resize_policy : resize_policy + val initial_size : int + end) += struct type t = int let ids = Hashtbl.create 1024 @@ -44,7 +48,7 @@ module Make(R : sig val resize_policy : resize_policy end) = struct let create ~default_value = { default_value - ; data = [||] + ; data = Array.make R.initial_size default_value } let resize t = diff --git a/src/stdune/interned.mli b/src/stdune/interned.mli index fec0493a..2b71006c 100644 --- a/src/stdune/interned.mli +++ b/src/stdune/interned.mli @@ -36,4 +36,7 @@ end type resize_policy = Conservative | Greedy -module Make(R : sig val resize_policy : resize_policy end) : S +module Make(R : sig + val initial_size : int + val resize_policy : resize_policy + end) : S diff --git a/src/sub_system_name.ml b/src/sub_system_name.ml index e44b598f..14397bbf 100644 --- a/src/sub_system_name.ml +++ b/src/sub_system_name.ml @@ -1,3 +1,6 @@ open Stdune -include Interned.Make(struct let resize_policy = Interned.Conservative end) +include Interned.Make(struct + let initial_size = 16 + let resize_policy = Interned.Conservative + end) diff --git a/src/variant.ml b/src/variant.ml index 66d2c0de..548b4855 100644 --- a/src/variant.ml +++ b/src/variant.ml @@ -1,6 +1,9 @@ open Stdune -include Interned.Make(struct let resize_policy = Interned.Conservative end) +include Interned.Make(struct + let initial_size = 256 + let resize_policy = Interned.Conservative + end) let ppx_driver = make "ppx_driver" let mt = make "mt"