Fixes #378 coercion to double was causing counter to forget its flags, changed it so that its value is updated directly

This commit is contained in:
vladoovt 2017-04-27 09:56:43 -06:00
parent 2d1a34626f
commit 1295ce8f23
2 changed files with 9 additions and 3 deletions

View file

@ -134,7 +134,13 @@ void ConsoleReporter::PrintRunData(const Run& result) {
for (auto& c : result.counters) {
auto const& s = HumanReadableNumber(c.second.value);
printer(Out, COLOR_DEFAULT, " %s=%s", c.first.c_str(), s.c_str());
if (c.second.flags & Counter::Flags::kIsRate) {
std::string counter_rate = StrCat(" ", HumanReadableNumber(c.second.value), " ", c.first.c_str(), "/s");
printer(Out, COLOR_DEFAULT, " %*s", 13, counter_rate.c_str());
}
else {
printer(Out, COLOR_DEFAULT, " %s=%s", c.first.c_str(), s.c_str());
}
}
if (!rate.empty()) {

View file

@ -30,7 +30,7 @@ double Finish(Counter const& c, double cpu_time, double num_threads) {
void Finish(UserCounters *l, double cpu_time, double num_threads) {
for (auto &c : *l) {
c.second = Finish(c.second, cpu_time, num_threads);
c.second.value = Finish(c.second, cpu_time, num_threads);
}
}
@ -39,7 +39,7 @@ void Increment(UserCounters *l, UserCounters const& r) {
for (auto &c : *l) {
auto it = r.find(c.first);
if (it != r.end()) {
c.second = c.second + it->second;
c.second.value = c.second + it->second;
}
}
// add counters present in r, but not in *l