# Beamchmark v1.4.2 - Table of Contents

Tool for measuring EVM performance

## Pages

- [Beamchmark](readme.md)
- [LICENSE](license.md)

## Modules

- [Beamchmark](Beamchmark.md): Top level module providing `Beamchmark.run/2` and `Beamchmark.run_attached/2` API.
- [Beamchmark.Formatter](Beamchmark.Formatter.md): The module defines a  behaviour that will be used to format and output `Beamchmark.Suite`.
You can adopt this behaviour to implement custom formatters.
- [Beamchmark.Math](Beamchmark.Math.md): The module contains helper math types and utility functions.

- [Beamchmark.Scenario](Beamchmark.Scenario.md): Scenario to run during benchmarking. Defines a behaviour that needs to be adopted by benchmarked modules.
- [Beamchmark.Suite](Beamchmark.Suite.md): The module defines a struct representing a single run of benchmark. It is also responsible for running the
benchmark and saving/loading the results.
- [Beamchmark.Utils](Beamchmark.Utils.md): The module defines utility functions for Beamchmark.

- [Beamchmark.Formatters.Console](Beamchmark.Formatters.Console.md): The module formats `Beamchmark.Suite` and outputs it using `Mix.shell/0`.

- [Beamchmark.Formatters.HTML](Beamchmark.Formatters.HTML.md): The module formats `Beamchmark.Suite` and outputs it to an HTML file.

- [Beamchmark.Formatters.Utils](Beamchmark.Formatters.Utils.md): The module provides functions common for multiple formatters.

- [Beamchmark.Suite.CPU.CpuTask](Beamchmark.Suite.CPU.CpuTask.md): This module contains the CPU benchmarking task.
Measurements are performed using [`:cpu_sup.util/1`](https://www.erlang.org/doc/man/cpu_sup.html)
Currently (according to docs), as busy processor states we identify:
  - user
  - nice_user (low priority use mode)
  - kernel

- [Beamchmark.Suite.Configuration](Beamchmark.Suite.Configuration.md): The module defines a structure used to configure `Beamchmark.Suite`. For more information
about customizing Beamchmark, refer to `t:Beamchmark.options_t/0`.

- [Beamchmark.Suite.Measurements](Beamchmark.Suite.Measurements.md): The module is responsible for gathering BEAM statistics during benchmarking.

- [Beamchmark.Suite.Measurements.CpuInfo](Beamchmark.Suite.Measurements.CpuInfo.md): Module representing statistics about cpu usage.
- [Beamchmark.Suite.Measurements.MemoryInfo](Beamchmark.Suite.Measurements.MemoryInfo.md): Module representing statistics about memory usage.

- [Beamchmark.Suite.Measurements.SchedulerInfo](Beamchmark.Suite.Measurements.SchedulerInfo.md): Module representing different statistics about scheduler usage.

- [Beamchmark.Suite.Memory.MemoryTask](Beamchmark.Suite.Memory.MemoryTask.md): This module contains the memory benchmarking task.
Measurements are performed using [`:erlang.memory/0`](https://www.erlang.org/doc/man/erlang.html#memory-0)

- [Beamchmark.Suite.SystemInfo](Beamchmark.Suite.SystemInfo.md): The module defines a struct containing various information about system that is used for benchmarking.

