Refactor GetTimeUnitAndMultiplier and add example

This commit is contained in:
Kai Wolf 2016-03-28 21:32:11 +02:00
parent 7c69b36078
commit 0b4111c3b3
5 changed files with 32 additions and 19 deletions

View File

@ -190,6 +190,14 @@ static void BM_test(benchmark::State& state) {
}
```
If a benchmark runs a few milliseconds it may be hard to visually compare the
measured times, since the output data is given in nanoseconds per default. In
order to manually set the time unit, you can specify it manually:
```c++
BENCHMARK(BM_test)->Unit(benchmark::kMillisecond);
```
Benchmark Fixtures
------------------
Fixture tests are created by

View File

@ -137,6 +137,13 @@ static void BM_MultiThreaded(benchmark::State& state) {
}
}
BENCHMARK(BM_MultiThreaded)->Threads(4);
If a benchmark runs a few milliseconds it may be hard to visually compare the
measured times, since the output data is given in nanoseconds per default. In
order to manually set the time unit, you can specify it manually:
BENCHMARK(BM_test)->Unit(benchmark::kMillisecond);
*/
#ifndef BENCHMARK_BENCHMARK_API_H_

View File

@ -22,6 +22,8 @@
namespace benchmark {
typedef std::pair<const char*,double> TimeUnitMultiplier;
// Interface for custom benchmark result printers.
// By default, benchmark reports are printed to stdout. However an application
// can control the destination of the reports by calling
@ -83,11 +85,10 @@ class BenchmarkReporter {
virtual ~BenchmarkReporter();
protected:
static void ComputeStats(std::vector<Run> const& reports, Run* mean, Run* stddev);
static void ComputeStats(std::vector<Run> const& reports, Run* mean, Run* stddev);
static TimeUnitMultiplier GetTimeUnitAndMultiplier(TimeUnit unit);
};
typedef std::pair<const char*,double> TimeUnitMultiplier;
// Simple reporter that outputs benchmark data to the console. This is the
// default reporter used by RunSpecifiedBenchmarks().
class ConsoleReporter : public BenchmarkReporter {
@ -98,9 +99,6 @@ class ConsoleReporter : public BenchmarkReporter {
protected:
virtual void PrintRunData(const Run& report);
private:
TimeUnitMultiplier getTimeUnitAndMultiplier(TimeUnit unit);
size_t name_field_width_;
};

View File

@ -95,7 +95,7 @@ void ConsoleReporter::PrintRunData(const Run& result) {
double multiplier;
const char* timeLabel;
std::tie(timeLabel, multiplier) = getTimeUnitAndMultiplier(result.time_unit);
std::tie(timeLabel, multiplier) = GetTimeUnitAndMultiplier(result.time_unit);
ColorPrintf(COLOR_GREEN, "%-*s ",
name_field_width_, result.benchmark_name.c_str());
@ -121,16 +121,4 @@ void ConsoleReporter::PrintRunData(const Run& result) {
result.report_label.c_str());
}
TimeUnitMultiplier ConsoleReporter::getTimeUnitAndMultiplier(TimeUnit unit) {
switch (unit) {
case kMillisecond:
return std::make_pair("ms", 1e3);
case kMicrosecond:
return std::make_pair("us", 1e6);
case kNanosecond:
default:
return std::make_pair("ns", 1e9);
}
}
} // end namespace benchmark

View File

@ -77,6 +77,18 @@ void BenchmarkReporter::ComputeStats(
stddev_data->items_per_second = items_per_second_stat.StdDev();
}
TimeUnitMultiplier BenchmarkReporter::GetTimeUnitAndMultiplier(TimeUnit unit) {
switch (unit) {
case kMillisecond:
return std::make_pair("ms", 1e3);
case kMicrosecond:
return std::make_pair("us", 1e6);
case kNanosecond:
default:
return std::make_pair("ns", 1e9);
}
}
void BenchmarkReporter::Finalize() {
}