diff options
author | Christopher Ferris <cferris@google.com> | 2015-02-20 18:31:06 -0800 |
---|---|---|
committer | Christopher Ferris <cferris@google.com> | 2015-02-25 14:56:32 -0800 |
commit | 339ac378ca04678bdbf9d60dbe715fe7fe7189c3 (patch) | |
tree | 673eab324ba5a918c4eff25af70287d9b2e9269b /benchmarks/Benchmark.cpp | |
parent | 8c41eae6fcdb6cad1f6c46ae01708ead6b734060 (diff) | |
download | bionic-339ac378ca04678bdbf9d60dbe715fe7fe7189c3.zip bionic-339ac378ca04678bdbf9d60dbe715fe7fe7189c3.tar.gz bionic-339ac378ca04678bdbf9d60dbe715fe7fe7189c3.tar.bz2 |
Allow wildcards to match arg values.
Change-Id: I38230b500bb8f8f69af0d7c740855a401cd12898
Diffstat (limited to 'benchmarks/Benchmark.cpp')
-rw-r--r-- | benchmarks/Benchmark.cpp | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/benchmarks/Benchmark.cpp b/benchmarks/Benchmark.cpp index eea304f..5ca1d47 100644 --- a/benchmarks/Benchmark.cpp +++ b/benchmarks/Benchmark.cpp @@ -39,40 +39,45 @@ static uint64_t NanoTime() { return static_cast<uint64_t>(t.tv_sec) * 1000000000LL + t.tv_nsec; } +bool Benchmark::header_printed_; + std::vector<Benchmark*>& Benchmark::List() { static std::vector<Benchmark*> list; return list; } int Benchmark::MaxNameColumnWidth() { - int max = 20; + size_t max = 20; for (auto& benchmark : List()) { max = std::max(max, benchmark->NameColumnWidth()); } - return max; + return static_cast<int>(max); } -bool Benchmark::RunAll(std::vector<regex_t*>& regs) { - bool ran_benchmark = false; +size_t Benchmark::RunAll(std::vector<regex_t*>& regs) { + size_t benchmarks_run = 0; + header_printed_ = false; for (auto& benchmark : List()) { - if (benchmark->ShouldRun(regs)) { - if (!ran_benchmark) { - printf("%-*s %10s %10s\n", MaxNameColumnWidth(), "", "iterations", "ns/op"); - ran_benchmark = true; - } - benchmark->RunAll(); - } + benchmarks_run += benchmark->RunAllArgs(regs); + } + return benchmarks_run; +} + +void Benchmark::PrintHeader() { + if (!header_printed_) { + printf("%-*s %10s %10s\n", MaxNameColumnWidth(), "", "iterations", "ns/op"); + header_printed_ = true; } - return ran_benchmark; } -bool Benchmark::ShouldRun(std::vector<regex_t*>& regs) { +template <typename T> +bool BenchmarkT<T>::ShouldRun(std::vector<regex_t*>& regs, T arg) { if (regs.empty()) { return true; } for (const auto& re : regs) { - if (regexec(re, Name().c_str(), 0, NULL, 0) != REG_NOMATCH) { + if (regexec(re, GetNameStr(arg).c_str(), 0, NULL, 0) != REG_NOMATCH) { return true; } } |