summaryrefslogtreecommitdiffstats
path: root/benchmarks/Benchmark.cpp
diff options
context:
space:
mode:
authorChristopher Ferris <cferris@google.com>2015-02-20 18:31:06 -0800
committerChristopher Ferris <cferris@google.com>2015-02-25 14:56:32 -0800
commit339ac378ca04678bdbf9d60dbe715fe7fe7189c3 (patch)
tree673eab324ba5a918c4eff25af70287d9b2e9269b /benchmarks/Benchmark.cpp
parent8c41eae6fcdb6cad1f6c46ae01708ead6b734060 (diff)
downloadbionic-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.cpp33
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;
}
}