diff options
author | Tor Brede Vekterli <vekterli@yahoo-inc.com> | 2016-11-30 16:03:14 +0100 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@yahoo-inc.com> | 2016-11-30 16:25:01 +0100 |
commit | eca2f18d071d0f69181c465ebcfa74929671286c (patch) | |
tree | 96c97c8c218a383fe8bfebb82d0a08023d4d8292 /metrics | |
parent | 557589154204700e25649f7dad3c6f353ad8cf8b (diff) |
Make LoadMetric memory usage calculation constant time
No point in looping over elements. As a bonus, memory usage calculation
is now more accurate as well.
Diffstat (limited to 'metrics')
-rw-r--r-- | metrics/src/vespa/metrics/loadmetric.h | 5 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/loadmetric.hpp | 7 |
2 files changed, 5 insertions, 7 deletions
diff --git a/metrics/src/vespa/metrics/loadmetric.h b/metrics/src/vespa/metrics/loadmetric.h index e23973d1681..3982e144846 100644 --- a/metrics/src/vespa/metrics/loadmetric.h +++ b/metrics/src/vespa/metrics/loadmetric.h @@ -46,7 +46,8 @@ template<typename MetricType> class LoadMetric : public MetricSet { std::vector<Metric::LP> _ownerList; typedef vespalib::LinkedPtr<MetricType> MetricTypeLP; - vespalib::hash_map<uint32_t, MetricTypeLP> _metrics; + using MetricMap = vespalib::hash_map<uint32_t, MetricTypeLP>; + MetricMap _metrics; SumMetric<MetricType> _sum; public: @@ -90,5 +91,5 @@ public: void addMemoryUsage(MemoryConsumption& mc) const override; }; -} // documentapi +} // metrics diff --git a/metrics/src/vespa/metrics/loadmetric.hpp b/metrics/src/vespa/metrics/loadmetric.hpp index ae743e959d1..7e0518d9403 100644 --- a/metrics/src/vespa/metrics/loadmetric.hpp +++ b/metrics/src/vespa/metrics/loadmetric.hpp @@ -71,11 +71,8 @@ template<typename MetricType> void LoadMetric<MetricType>::addMemoryUsage(MemoryConsumption& mc) const { ++mc._loadMetricCount; - mc._loadMetricMeta += sizeof(Metric::LP) * _ownerList.size(); - for (const auto & unused : _metrics) { - (void) unused; - mc._loadMetricMeta += sizeof(uint32_t) + sizeof(MetricTypeLP); - } + mc._loadMetricMeta += (sizeof(Metric::LP) * _ownerList.capacity()) + + (sizeof(typename MetricMap::value_type) * _metrics.capacity()); _sum.addMemoryUsage(mc); mc._loadMetricMeta += sizeof(LoadMetric<MetricType>) - sizeof(MetricSet) |