Multicore_bench.Util
Utilities for creating benchmarks.
⚠️ In the future we expect to regroup these utilities under different modules and deprecate them in this module.
A multiplier depending various factors such as whether we are running on a 32- or 64-bit machine (1x/10x), bytecode or native (1x/10x), and whether we are running on single-core or multicore OCaml (1x/10x).
alloc ~batch n
tries to decrement the specified atomic variable n
by at most the optional amount ~batch
and not beyond n
having value 0
. Returns the amount by which n
was decremented, which is 0
only in case n
is 0
.
cross xs ys
returns a list formed by pairing each element of xs
with each element of ys
.
For example:
# Util.cross [1; 2; 3] ["a"; "b"]
- : (int * string) list =
[(1, "a"); (1, "b"); (2, "a"); (2, "b"); (3, "a"); (3, "b")]
module Bits : sig ... end
A minimalistic bitset data structure.
val generate_push_and_pop_sequence :
?state:Stdlib.Random.State.t ->
int ->
Bits.t
generate_push_and_pop_sequence n
generates a bitset where each true
bit represents a "push" operation and each false
bit represents a "try_pop" operation. Performing the operations on an initially empty dispenser leaves the dispenser empty. The sequence may include "try_pop" operations at points where the dispenser will be empty.