Module Mavryk_benchmarks_proto_alpha.Interpreter_benchmarks

module Timelock_samplers = Mavryk_crypto.Timelock
type ex_stack_and_kinstr =
  1. | Ex_stack_and_kinstr : {
    1. stack : 'a * 'b;
    2. stack_type : ('a, 'b) Mavryk_protocol_alpha.Protocol.Script_typed_ir.stack_ty;
    3. kinstr : ('a, 'b, 'c, 'd) Mavryk_protocol_alpha.Protocol.Script_typed_ir.kinstr;
    } -> ex_stack_and_kinstr
type ex_stack_and_continuation =
  1. | Ex_stack_and_cont : {
    1. stack : 'a * 'b;
    2. stack_type : ('a, 'b) Mavryk_protocol_alpha.Protocol.Script_typed_ir.stack_ty;
    3. cont : ('a, 'b, 'c, 'd) Mavryk_protocol_alpha.Protocol.Script_typed_ir.continuation;
    } -> ex_stack_and_continuation
type ex_value =
  1. | Ex_value : {
    1. value : 'a;
    2. ty : ('a, _) Mavryk_protocol_alpha.Protocol.Script_typed_ir.ty;
    } -> ex_value
type benchmark_type = Registration_helpers.benchmark_type =
  1. | Time
  2. | Alloc
val gas_unit_per_allocation_word : int
val sf : ('a, unit, string) Stdlib.format -> 'a
val info_and_name : benchmark_type:benchmark_type -> intercept:bool -> ?salt:string -> string -> string * Mavryk_benchmark.Namespace.t
module Default_boilerplate : sig ... end
module Default_config : sig ... end
val make_default_samplers : ?algo:[ `Algo of Mavryk_crypto.Signature.V_latest.algo | `Default ] -> Mavryk_benchmark_alpha__Michelson_samplers.parameters -> (module Mavryk_benchmark.Crypto_samplers.Finite_key_pool_S) * (module Mavryk_benchmark_alpha.Michelson_samplers.S)
val register_model_for_code_generation : 'a Mavryk_benchmark.Model.model -> unit
val register_time_alloc_codegen_model : Interpreter_workload.instr_or_cont_name -> unit
val time_and_alloc : (benchmark_type -> unit) -> unit
val make_benchmark : ?amplification:int -> ?intercept:bool -> ?salt:string -> ?more_tags:string list -> ?check:(unit -> unit) -> name:Interpreter_workload.instruction_name -> benchmark_type:benchmark_type -> kinstr_and_stack_sampler: (Default_config.config -> Stdlib.Random.State.t -> unit -> ex_stack_and_kinstr) -> unit -> Mavryk_benchmark.Benchmark.t
val make_simple_benchmark : 'bef_top 'bef 'res_top 'res. ?amplification:int -> ?intercept:bool -> ?more_tags:string list -> ?salt:string -> ?check:(unit -> unit) -> name:Interpreter_workload.instruction_name -> benchmark_type:benchmark_type -> stack_type: ('bef_top, 'bef) Mavryk_protocol_alpha.Protocol.Script_typed_ir.stack_ty -> kinstr: ('bef_top, 'bef, 'res_top, 'res) Mavryk_protocol_alpha.Protocol.Script_typed_ir.kinstr -> unit -> Mavryk_benchmark.Benchmark.t
val benchmark : ?benchmark_type:benchmark_type -> ?amplification:int -> ?intercept:bool -> ?more_tags:string list -> ?salt:string -> ?check:(unit -> unit) -> name:Interpreter_workload.instruction_name -> kinstr_and_stack_sampler: (Default_config.config -> Stdlib.Random.State.t -> unit -> ex_stack_and_kinstr) -> unit -> unit
val time_alloc_benchmark : ?amplification:int -> ?intercept:bool -> ?more_tags:string list -> ?salt:string -> ?check:(unit -> unit) -> name:Interpreter_workload.instruction_name -> kinstr_and_stack_sampler: (Default_config.config -> Stdlib.Random.State.t -> unit -> ex_stack_and_kinstr) -> unit -> unit
val benchmark_with_stack_sampler : ?benchmark_type:benchmark_type -> ?amplification:int -> ?intercept:bool -> ?more_tags:string list -> ?salt:string -> ?check:(unit -> unit) -> stack_type:('a, 'b) Mavryk_protocol_alpha.Protocol.Script_typed_ir.stack_ty -> name:Interpreter_workload.instruction_name -> kinstr:('c, 'd, 'e, 'f) Mavryk_protocol_alpha.Protocol.Script_typed_ir.kinstr -> stack_sampler: (Default_config.config -> Stdlib.Random.State.t -> unit -> 'g * 'h) -> unit -> unit
val benchmark_with_fixed_stack : ?benchmark_type:benchmark_type -> ?amplification:int -> ?intercept:bool -> ?more_tags:string list -> ?salt:string -> ?check:(unit -> unit) -> name:Interpreter_workload.instruction_name -> stack_type:('a, 'b) Mavryk_protocol_alpha.Protocol.Script_typed_ir.stack_ty -> stack:('a * 'b) -> kinstr:('a, 'b, 'c, 'd) Mavryk_protocol_alpha.Protocol.Script_typed_ir.kinstr -> unit -> unit
val time_alloc_benchmark_with_fixed_stack : ?amplification:int -> ?intercept:bool -> ?more_tags:string list -> ?salt:string -> ?check:(unit -> unit) -> name:Interpreter_workload.instruction_name -> stack_type:('a, 'b) Mavryk_protocol_alpha.Protocol.Script_typed_ir.stack_ty -> stack:('c * 'd) -> kinstr:('a, 'b, 'e, 'f) Mavryk_protocol_alpha.Protocol.Script_typed_ir.kinstr -> unit -> unit
val simple_benchmark_with_stack_sampler : ?benchmark_type:benchmark_type -> ?amplification:int -> ?intercept_stack:('a * 'b) -> ?salt:string -> ?more_tags:string list -> ?check:(unit -> unit) -> name:Interpreter_workload.instruction_name -> stack_type:('c, 'd) Mavryk_protocol_alpha.Protocol.Script_typed_ir.stack_ty -> kinstr:('c, 'd, 'e, 'f) Mavryk_protocol_alpha.Protocol.Script_typed_ir.kinstr -> stack_sampler: (Default_config.config -> Stdlib.Random.State.t -> unit -> 'c * 'd) -> unit -> unit
val simple_time_alloc_benchmark_with_stack_sampler : ?amplification:int -> ?intercept_stack:('a * 'b) -> ?alloc_intercept:bool -> ?salt:string -> ?more_tags:string list -> ?check:(unit -> unit) -> name:Interpreter_workload.instruction_name -> stack_type:('c, 'd) Mavryk_protocol_alpha.Protocol.Script_typed_ir.stack_ty -> kinstr:('c, 'd, 'e, 'f) Mavryk_protocol_alpha.Protocol.Script_typed_ir.kinstr -> stack_sampler: (Default_config.config -> Stdlib.Random.State.t -> unit -> 'a * 'b) -> unit -> unit
val simple_benchmark : ?benchmark_type:benchmark_type -> ?amplification:int -> ?intercept_stack:('a * 'b) -> ?more_tags:string list -> ?salt:string -> ?check:(unit -> unit) -> name:Interpreter_workload.instruction_name -> stack_type:('c, 'd) Mavryk_protocol_alpha.Protocol.Script_typed_ir.stack_ty -> kinstr:('c, 'd, 'e, 'f) Mavryk_protocol_alpha.Protocol.Script_typed_ir.kinstr -> unit -> unit
val simple_time_alloc_benchmark : ?amplification:int -> ?intercept_stack:('a * 'b) -> ?more_tags:string list -> ?salt:string -> ?check:(unit -> unit) -> name:Interpreter_workload.instruction_name -> stack_type:('c, 'd) Mavryk_protocol_alpha.Protocol.Script_typed_ir.stack_ty -> kinstr:('c, 'd, 'e, 'f) Mavryk_protocol_alpha.Protocol.Script_typed_ir.kinstr -> unit -> unit
val make_continuation_benchmark : ?amplification:int -> ?intercept:bool -> ?salt:string -> ?more_tags:string list -> ?check:(unit -> unit) -> name:Interpreter_workload.continuation_name -> benchmark_type:benchmark_type -> cont_and_stack_sampler: (Default_config.config -> Stdlib.Random.State.t -> unit -> ex_stack_and_continuation) -> unit -> Mavryk_benchmark.Benchmark.t
val continuation_benchmark : ?benchmark_type:benchmark_type -> ?amplification:int -> ?intercept:bool -> ?salt:string -> ?more_tags:string list -> ?check:(unit -> unit) -> name:Interpreter_workload.continuation_name -> cont_and_stack_sampler: (Default_config.config -> Stdlib.Random.State.t -> unit -> ex_stack_and_continuation) -> unit -> unit
val continuation_time_alloc_benchmark : ?amplification:int -> ?intercept:bool -> ?salt:string -> ?more_tags:string list -> ?check:(unit -> unit) -> name:Interpreter_workload.continuation_name -> cont_and_stack_sampler: (Default_config.config -> Stdlib.Random.State.t -> unit -> ex_stack_and_continuation) -> unit -> unit

Registration_section contains all interpreter benchmarks. The goal of a benchmark is to gather enough data to reliably estimate the parameters of the cost model associated to each instruction. In general, it can take several distinct benchmarks to properly cover all the execution paths.

In particular, for affine cost model, it is often worth estimating the intercept separately from the size-dependent coefficients.

module Registration_section : sig ... end