Benchee v0.5.0 Benchee.Conversion.Duration

Unit scaling for duration converting from microseconds to minutes and others.

Summary

Functions

The most basic unit in which measurements occur, microseconds

Finds the best unit for a list of durations. By default, chooses the most common unit. In case of tie, chooses the largest of the most common units

Formats a number as a string, with a unit label. To specify the unit, pass a tuple of {value, unit_atom} like {1_234, :second}

Converts a value of the given unit into microseconds

Scales a duration value in microseconds into a larger unit if appropriate

Scales a duration value in microseconds into a value in the specified unit

Get a unit by its atom representation

Functions

base_unit()

The most basic unit in which measurements occur, microseconds.

Examples

iex> Benchee.Conversion.Duration.base_unit.name
:microsecond
best(list, opts \\ [strategy: :best])

Finds the best unit for a list of durations. By default, chooses the most common unit. In case of tie, chooses the largest of the most common units.

Pass [strategy: :smallest] to always return the smallest unit in the list. Pass [strategy: :largest] to always return the largest unit in the list.

Examples

iex> Benchee.Conversion.Duration.best([23, 23_000, 34_000, 2_340_000]).name
:millisecond

iex> Benchee.Conversion.Duration.best([23, 23_000, 34_000, 2_340_000, 3_450_000]).name
:second

iex> Benchee.Conversion.Duration.best([23, 23_000, 34_000, 2_340_000], strategy: :smallest).name
:microsecond

iex> Benchee.Conversion.Duration.best([23, 23_000, 34_000, 2_340_000], strategy: :largest).name
:second
format(duration)

Formats a number as a string, with a unit label. To specify the unit, pass a tuple of {value, unit_atom} like {1_234, :second}

Examples

iex> Benchee.Conversion.Duration.format(45_678.9)
"45.68 ms"

iex> Benchee.Conversion.Duration.format(45.6789)
"45.68 μs"

iex> Benchee.Conversion.Duration.format({45.6789, :millisecond})
"45.68 ms"

iex> Benchee.Conversion.Duration.format({45.6789, %Benchee.Conversion.Unit{long: "Milliseconds", magnitude: 1000, label: "ms"}})
"45.68 ms"
microseconds(arg)

Converts a value of the given unit into microseconds

Examples

iex> Benchee.Conversion.Duration.microseconds({1.234, :second})
1_234_000.0

iex> Benchee.Conversion.Duration.microseconds({1.234, :minute})
7.404e7

iex> Benchee.Conversion.Duration.microseconds({1.234, :minute}) |> Benchee.Conversion.Duration.scale(:minute)
1.234
scale(duration)

Scales a duration value in microseconds into a larger unit if appropriate

Examples

iex> {value, unit} = Benchee.Conversion.Duration.scale(1)
iex> value
1.0
iex> unit.name
:microsecond

iex> {value, unit} = Benchee.Conversion.Duration.scale(1_234)
iex> value
1.234
iex> unit.name
:millisecond

iex> {value, unit} = Benchee.Conversion.Duration.scale(11_234_567_890.123)
iex> value
3.1207133028119443
iex> unit.name
:hour
scale(count, unit)

Scales a duration value in microseconds into a value in the specified unit

Examples

iex> Benchee.Conversion.Duration.scale(12345, :microsecond)
12345.0

iex> Benchee.Conversion.Duration.scale(12345, :millisecond)
12.345

iex> Benchee.Conversion.Duration.scale(12345, :minute)
2.0575e-4
unit_for(unit)

Get a unit by its atom representation.

Examples

iex> Benchee.Conversion.Duration.unit_for :hour
%Benchee.Conversion.Unit{
  name:      :hour,
  magnitude: 3_600_000_000,
  label:     "h",
  long:      "Hours"
}