aboutsummaryrefslogtreecommitdiffstats
path: root/metrics
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@yahoo-inc.com>2016-11-30 16:03:14 +0100
committerTor Brede Vekterli <vekterli@yahoo-inc.com>2016-11-30 16:25:01 +0100
commiteca2f18d071d0f69181c465ebcfa74929671286c (patch)
tree96c97c8c218a383fe8bfebb82d0a08023d4d8292 /metrics
parent557589154204700e25649f7dad3c6f353ad8cf8b (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.h5
-rw-r--r--metrics/src/vespa/metrics/loadmetric.hpp7
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)