77 lines
2.3 KiB
OCaml
77 lines
2.3 KiB
OCaml
let seed = "4EygbdYh+v35vvrmD9YYP4byT5E3H7lTeXJiIj+dQnc="
|
|
let seed = Base64.decode_exn seed
|
|
|
|
let seed =
|
|
let res = Array.make (String.length seed / 2) 0 in
|
|
for i = 0 to (String.length seed / 2) - 1 do
|
|
res.(i) <- (Char.code seed.[i * 2] lsl 8) lor Char.code seed.[(i * 2) + 1]
|
|
done;
|
|
res
|
|
|
|
let random length =
|
|
let get _ =
|
|
match Random.int (10 + 26 + 26) with
|
|
| n when n < 10 -> Char.(chr (code '0' + n))
|
|
| n when n < 10 + 26 -> Char.(chr (code 'a' + n - 10))
|
|
| n -> Char.(chr (code 'A' + n - 10 - 26))
|
|
in
|
|
String.init length get
|
|
|
|
let hash_eq_0 = random 4096
|
|
let hash_eq_1 = Bytes.to_string (Bytes.of_string hash_eq_0)
|
|
|
|
open Bechamel
|
|
open Toolkit
|
|
|
|
let bstr_equal =
|
|
let hash_eq_0 = Bstr.of_string hash_eq_0 in
|
|
let hash_eq_1 = Bstr.of_string hash_eq_1 in
|
|
Test.make ~name:"bstr"
|
|
@@ Staged.stage
|
|
@@ fun () -> Bstr.equal hash_eq_0 hash_eq_1
|
|
|
|
let bigstringaf_equal =
|
|
let hash_eq_0 = Bigstringaf.of_string hash_eq_0 ~off:0 ~len:4096 in
|
|
let hash_eq_1 = Bigstringaf.of_string hash_eq_1 ~off:0 ~len:4096 in
|
|
Test.make ~name:"bigstringaf"
|
|
@@ Staged.stage
|
|
@@ fun () -> Bigstringaf.memcmp hash_eq_0 0 hash_eq_1 0 4096
|
|
|
|
let cstruct_equal =
|
|
let hash_eq_0 = Cstruct.of_string hash_eq_0 in
|
|
let hash_eq_1 = Cstruct.of_string hash_eq_1 in
|
|
Test.make ~name:"cstruct"
|
|
@@ Staged.stage
|
|
@@ fun () -> Cstruct.equal hash_eq_0 hash_eq_1
|
|
|
|
let tests =
|
|
Test.make_grouped ~name:"equal" ~fmt:"%s %s"
|
|
[ bstr_equal; bigstringaf_equal; cstruct_equal ]
|
|
|
|
let benchmark () =
|
|
let bootstrap = 0 and r_square = true and predictors = Measure.[| run |] in
|
|
let ols = Analyze.ols ~bootstrap ~r_square ~predictors in
|
|
let instances = Instance.[ monotonic_clock ] in
|
|
let limit = 2000
|
|
and stabilize = true
|
|
and quota = Time.second 1.0
|
|
and kde = Some 1000 in
|
|
let cfg = Benchmark.cfg ~limit ~stabilize ~quota ~kde () in
|
|
let raw = Benchmark.all cfg instances tests in
|
|
let res = List.map (fun i -> Analyze.all ols i raw) instances in
|
|
let res = Analyze.merge ols instances res in
|
|
(res, raw)
|
|
|
|
let nothing _ = Ok ()
|
|
let compare = String.compare
|
|
|
|
let () =
|
|
let res = benchmark () in
|
|
let res =
|
|
let open Bechamel_js in
|
|
let dst = Channel stdout
|
|
and x_label = Measure.run
|
|
and y_label = Measure.label Instance.monotonic_clock in
|
|
emit ~dst nothing ~compare ~x_label ~y_label res
|
|
in
|
|
match res with Ok () -> () | Error (`Msg msg) -> failwith msg
|