Commit 1826feb1 by Joao Paulo Magalhaes

ResultsCheckerEntry: add more getter functions.

parent 2a8d0dd1
...@@ -73,9 +73,26 @@ struct ResultsCheckerEntry { ...@@ -73,9 +73,26 @@ struct ResultsCheckerEntry {
std::map< std::string, std::string > values; std::map< std::string, std::string > values;
ResultsCheckFn check_fn; ResultsCheckFn check_fn;
// int NumThreads() const; // TODO int NumThreads() const {
// double duration_real_time() const {} // TODO auto pos = name.find_last_of("/threads:");
// double duration_cpu_time() const {} // TODO if(pos == name.npos) return 1;
auto end = name.find_last_of('/', pos + 9);
std::stringstream ss;
ss << name.substr(pos + 9, end);
int num = 1;
ss >> num;
CHECK(!ss.fail());
return num;
}
// get the real_time duration of the benchmark in seconds
double DurationRealTime() const {
return GetAs< double >("iterations") * GetTime("real_time");
}
// get the cpu_time duration of the benchmark in seconds
double DurationCPUTime() const {
return GetAs< double >("iterations") * GetTime("cpu_time");
}
// get the string for a result by name, or nullptr if the name // get the string for a result by name, or nullptr if the name
// is not found // is not found
...@@ -105,6 +122,25 @@ struct ResultsCheckerEntry { ...@@ -105,6 +122,25 @@ struct ResultsCheckerEntry {
T tval = static_cast< T >(dval); T tval = static_cast< T >(dval);
return tval; return tval;
} }
// get cpu_time or real_time in seconds
double GetTime(const char* which) const {
double val = GetAs< double >(which);
auto unit = Get("time_unit");
CHECK(unit);
if(*unit == "ns") {
return val * 1.e-9;
} else if(*unit == "us") {
return val * 1.e-6;
} else if(*unit == "ms") {
return val * 1.e-3;
} else if(*unit == "s") {
return val;
} else {
CHECK(1 == 0) << "unknown time unit: " << *unit;
return 0;
}
}
}; };
#define _CHECK_RESULT_VALUE(entry, getfn, var_type, var_name, relationship, value) \ #define _CHECK_RESULT_VALUE(entry, getfn, var_type, var_name, relationship, value) \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment