# `Benchee`
[🔗](https://github.com/bencheeorg/benchee/blob/1.5.1/lib/benchee.ex#L17)

Top level module providing convenience access to needed functions as well
as the very high level `Benchee.run` API.

Intended Elixir interface.

# `benchmark`

# `collect`

# `init`

# `init`

# `load`

# `profile`

# `relative_statistics`

# `report`

```elixir
@spec report(keyword()) :: Benchee.Suite.t()
```

A convenience function designed for loading saved benchmarks and running formatters on them.

Basically takes the input of the map of jobs away from you and skips unnecessary steps with
that data missing (aka not running benchmarks, only running relative statistics).

You can use config options as normal, but some options related to benchmarking won't take
effect (such as `:time`). The `:load` option however is mandatory to use, as you need to
load some benchmarks to report on them.

## Usage

    Benchee.report(load: ["benchmark-*.benchee"])

# `run`

```elixir
@spec run(
  map(),
  keyword()
) :: Benchee.Suite.t()
```

Run benchmark jobs defined by a map and optionally provide configuration
options.

Benchmarks are defined as a map where the keys are a name for the given
function and the values are the functions to benchmark. Users can configure
the run by passing a keyword list as the second argument. For more
information on configuration see `Benchee.Configuration.init/1`.

## Examples

    Benchee.run(
      %{
        "My Benchmark" => fn -> 1 + 1 end,
        "My other benchmrk" => fn -> [1] ++ [1] end
      },
      warmup: 2,
      time: 3
    )

# `statistics`

# `system`

