bencher.factories

Factory functions for creating Bench and BenchRunner instances.

This module breaks the circular dependency between ParametrizedSweep and Bench/BenchRunner by providing standalone factory functions that can be imported without triggering circular imports.

Functions

create_bench(→ bencher.bencher.Bench)

Create a Bench instance from a ParametrizedSweep.

create_bench_runner(→ bencher.bench_runner.BenchRunner)

Create a BenchRunner instance from a ParametrizedSweep.

Module Contents

bencher.factories.create_bench(sweep: bencher.variables.parametrised_sweep.ParametrizedSweep, run_cfg: bencher.bench_cfg.BenchRunCfg | None = None, report: bencher.bench_report.BenchReport | None = None, name: str | None = None) bencher.bencher.Bench

Create a Bench instance from a ParametrizedSweep.

Parameters:
  • sweep – The ParametrizedSweep instance to benchmark.

  • run_cfg – Optional benchmark run configuration.

  • report – Optional existing report to append results to.

  • name – Optional name for the benchmark. If None, derived from sweep’s class name.

Returns:

A configured Bench instance.

bencher.factories.create_bench_runner(sweep: bencher.variables.parametrised_sweep.ParametrizedSweep, run_cfg: bencher.bench_cfg.BenchRunCfg | None = None, name: str | None = None) bencher.bench_runner.BenchRunner

Create a BenchRunner instance from a ParametrizedSweep.

Enables fluent chaining like:

MyConfig().to_bench_runner().add(func).run(subsampling_divisions=2, max_subsampling_divisions=4)

Parameters:
  • sweep – The ParametrizedSweep instance to use as the benchmark class.

  • run_cfg – Optional benchmark run configuration. Created if not provided.

  • name – Optional name for the runner. If None, auto-generated.

Returns:

A configured BenchRunner instance.