Packages

Get CSV from your benchee benchmarks to turn them into graphs or whatever!

Current section

Files

Jump to
benchee_csv lib benchee formatters csv raw.ex
Raw

lib/benchee/formatters/csv/raw.ex

defmodule Benchee.Formatters.CSV.Raw do
alias Benchee.Benchmark.Scenario
@moduledoc """
Functionality for converting Benchee scenarios to raw csv.
"""
@doc """
Adds headers to given measurements.
## Examples
iex> alias Benchee.Benchmark.Scenario
iex> no_input = Benchee.Benchmark.no_input()
iex> scenarios = [
...> %Scenario{name: "Foo", input_name: "list"},
...> %Scenario{name: "Bar", input_name: no_input}
...> ]
iex> Benchee.Formatters.CSV.Raw.add_headers([[100, 200], [101, 201]], scenarios)
[["Foo with input list", "Bar"], [100, 200], [101, 201]]
"""
def add_headers(measurements, scenarios) do
headers = Enum.map(scenarios, fn scenario ->
"#{scenario.name}#{input_part(scenario)}"
end)
[headers | measurements]
end
@no_input Benchee.Benchmark.no_input()
defp input_part(%Scenario{input_name: nil}), do: ""
defp input_part(%Scenario{input_name: @no_input}), do: ""
defp input_part(%Scenario{input_name: name}), do: " with input #{name}"
end