energy-bench 0.1.12

Methods for benchmarking the energy consumption of programs.
Documentation

Energy Benchmarking Tool (Alpha)

Tool for benchmarking the energy consumption of programs. Idle energy consumption and energy consumed by data generation are not included in the results. A new benchmark builder is created with EnergyTool::new(). A benchmark of function bench_fn with data data_fn can be started with benchmark(bench_fn, data_fn). This function returns a JSON of measurement data.

use energy_bench::EnergyTool;

let builder = EnergyTool::new();

let json = builder.benchmark(bench_fn, data_fn);

Some programs are too short-running to provide accurate energy measurement results. To avoid this, the benchmark can be repeated a fixed number of type between measurements: with_runs_per_measurement. Or it can be repeated until some amount of time has passed: with_min_measurement_duration. By default, benchmarks are run for at least 100ms.

let builder = EnergyTool::new().with_runs_per_measurement(10);

let builder = EnergyTool::new().with_min_measurement_duration(Duration::from_secs(5));

The benchmark results can directly be written to a file:

let file = &File::create("the_file.json")?;
let builder = EnergyTool::new().write_to_file(file);

Idle consumption is always computed beforehand, and is subtracted from the results. The default duration is one minute, however it can be increased with:

let builder = EnergyTool::new().with_idle_duration(Duration::from_secs(90));

Features

We support multiple measuring devices.

Currently, we support the features rapl and ina.

For AMD users, RAPL can be read by adding the amd flag.