Benchee v0.12.0 Benchee.Formatters.Console View Source

Formatter to transform the statistics output into a structure suitable for output through IO.write on the console.

Link to this section Summary

Functions

Formats the benchmark statistics to a report suitable for output on the CLI

Formats the job statistics to a report suitable for output on the CLI

Combines format/1 and write/1 into a single convenience function that is also chainable (as it takes a suite and returns a suite)

Takes the output of format/1 and writes that to the console

Link to this section Types

Link to this type unit_per_statistic() View Source
unit_per_statistic() :: %{optional(atom()) => Benchee.Conversion.Unit.t()}

Link to this section Functions

Link to this function format(suite) View Source
format(Benchee.Suite.t()) :: [any()]

Formats the benchmark statistics to a report suitable for output on the CLI.

Returns a list of lists, where each list element is a group belonging to one specific input. So if there only was one (or no) input given through :inputs then there’s just one list inside.

Examples

iex> scenarios = [
...>   %Benchee.Benchmark.Scenario{
...>     name: "My Job", input_name: "My input", run_time_statistics: %Benchee.Statistics{
...>       average: 200.0,ips: 5000.0,std_dev_ratio: 0.1, median: 190.0, percentiles: %{99 => 300.1}
...>     }
...>   },
...>   %Benchee.Benchmark.Scenario{
...>     name: "Job 2", input_name: "My input", run_time_statistics: %Benchee.Statistics{
...>       average: 400.0, ips: 2500.0, std_dev_ratio: 0.2, median: 390.0, percentiles: %{99 => 500.1}
...>     }
...>   }
...> ]
iex> suite = %Benchee.Suite{
...>   scenarios: scenarios,
...>   configuration: %Benchee.Configuration{
...>     formatter_options: %{
...>       console: %{comparison: false, extended_statistics: false}
...>     },
...>     unit_scaling: :best
...>   }
...> }
iex> Benchee.Formatters.Console.format(suite)
[["
##### With input My input #####", "
Name             ips        average  deviation         median         99th %
",
"My Job           5 K         200 μs    ±10.00%         190 μs      300.10 μs
",
"Job 2         2.50 K         400 μs    ±20.00%         390 μs      500.10 μs
"]]
Link to this function format_scenarios(scenarios, config) View Source
format_scenarios([Benchee.Benchmark.Scenario.t()], map()) :: [String.t(), ...]

Formats the job statistics to a report suitable for output on the CLI.

Examples

iex> scenarios = [
...>   %Benchee.Benchmark.Scenario{
...>     name: "My Job", run_time_statistics: %Benchee.Statistics{
...>       average: 200.0, ips: 5000.0,std_dev_ratio: 0.1, median: 190.0, percentiles: %{99 => 300.1},
...>       minimum: 100.1, maximum: 200.2, sample_size: 10_101, mode: 333.2
...>     }
...>   },
...>   %Benchee.Benchmark.Scenario{
...>     name: "Job 2", run_time_statistics: %Benchee.Statistics{
...>       average: 400.0, ips: 2500.0, std_dev_ratio: 0.2, median: 390.0, percentiles: %{99 => 500.1},
...>       minimum: 200.2, maximum: 400.4, sample_size: 20_202, mode: [612.3, 554.1]
...>     }
...>   }
...> ]
iex> configuration = %{comparison: false, unit_scaling: :best, extended_statistics: true}
iex> Benchee.Formatters.Console.format_scenarios(scenarios, configuration)
["
Name             ips        average  deviation         median         99th %
",
"My Job           5 K         200 μs    ±10.00%         190 μs      300.10 μs
",
"Job 2         2.50 K         400 μs    ±20.00%         390 μs      500.10 μs
",
"
Extended statistics: 
",
"
Name           minimum        maximum    sample size                     mode
",
"My Job       100.10 μs      200.20 μs        10.10 K                333.20 μs
",
"Job 2        200.20 μs      400.40 μs        20.20 K     612.30 μs, 554.10 μs
"]

Combines format/1 and write/1 into a single convenience function that is also chainable (as it takes a suite and returns a suite).

Link to this function write(output) View Source
write(any()) :: :ok | {:error, String.t()}

Takes the output of format/1 and writes that to the console.