From: Joel Rosdahl Date: Fri, 11 Sep 2020 07:43:00 +0000 (+0200) Subject: Add and use Counters::increment(const Counters&) X-Git-Tag: v4.0~106 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a16f3d5be5535e5e8ff9f52d3fc2387bdc0da94b;p=thirdparty%2Fccache.git Add and use Counters::increment(const Counters&) --- diff --git a/src/Counters.cpp b/src/Counters.cpp index 1ec52e2e0..56603a164 100644 --- a/src/Counters.cpp +++ b/src/Counters.cpp @@ -70,6 +70,17 @@ Counters::increment(Statistic statistic, int64_t value) std::max(static_cast(0), static_cast(counter + value)); } +void +Counters::increment(const Counters& other) +{ + m_counters.resize(std::max(size(), other.size())); + for (size_t i = 0; i < other.size(); ++i) { + auto& counter = m_counters[i]; + counter = std::max(static_cast(0), + static_cast(counter + other.m_counters[i])); + } +} + size_t Counters::size() const { diff --git a/src/Counters.hpp b/src/Counters.hpp index 44dc0b726..d19227b5b 100644 --- a/src/Counters.hpp +++ b/src/Counters.hpp @@ -38,6 +38,7 @@ public: void set_raw(size_t index, uint64_t value); void increment(Statistic statistic, int64_t value = 1); + void increment(const Counters& other); size_t size() const; diff --git a/src/stats.cpp b/src/stats.cpp index 133da430f..5e39f10bb 100644 --- a/src/stats.cpp +++ b/src/stats.cpp @@ -275,10 +275,7 @@ stats_flush_to_file(const Config& config, } stats_read(sfile, counters); - for (size_t i = 0; i < static_cast(Statistic::END); ++i) { - counters.increment(static_cast(i), - updates.get(static_cast(i))); - } + counters.increment(updates); stats_write(sfile, counters); }