summaryrefslogtreecommitdiffstats
path: root/metrics
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@oath.com>2018-11-01 15:14:02 +0100
committerHenning Baldersheim <balder@oath.com>2018-11-01 15:14:38 +0100
commit2740969f948dcf1e27d1a23dd1e45afadbf9857e (patch)
treece77435b6ea78c67d47de5d9587efa0203324cbf /metrics
parentd31a1b7f2df4ea94821a9d98754f4ae186bbf2d8 (diff)
Use template args for the class, not on the find method.
Diffstat (limited to 'metrics')
-rw-r--r--metrics/src/vespa/metrics/CMakeLists.txt1
-rw-r--r--metrics/src/vespa/metrics/memoryconsumption.cpp5
-rw-r--r--metrics/src/vespa/metrics/namehash.cpp43
-rw-r--r--metrics/src/vespa/metrics/namehash.h48
4 files changed, 2 insertions, 95 deletions
diff --git a/metrics/src/vespa/metrics/CMakeLists.txt b/metrics/src/vespa/metrics/CMakeLists.txt
index 147e88cd61c..96156dc84b0 100644
--- a/metrics/src/vespa/metrics/CMakeLists.txt
+++ b/metrics/src/vespa/metrics/CMakeLists.txt
@@ -12,7 +12,6 @@ vespa_add_library(metrics
metricsnapshot.cpp
metrictimer.cpp
metricvalueset.cpp
- namehash.cpp
printutils.cpp
name_repo.cpp
state_api_adapter.cpp
diff --git a/metrics/src/vespa/metrics/memoryconsumption.cpp b/metrics/src/vespa/metrics/memoryconsumption.cpp
index 5a3280c20ab..0391e496ecd 100644
--- a/metrics/src/vespa/metrics/memoryconsumption.cpp
+++ b/metrics/src/vespa/metrics/memoryconsumption.cpp
@@ -1,12 +1,11 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "memoryconsumption.h"
-#include <vespa/vespalib/stllike/hash_set.h>
-#include <vespa/vespalib/stllike/hashtable.hpp>
+#include <vespa/vespalib/stllike/hash_set.hpp>
#include <sstream>
namespace metrics {
-struct SeenStrings : public vespalib::hash_set<const void*> { };
+struct SeenStrings : public vespalib::hash_set<const char*> { };
struct SnapShotUsage : public std::vector<std::pair<std::string, uint32_t> > { };
MemoryConsumption::MemoryConsumption()
diff --git a/metrics/src/vespa/metrics/namehash.cpp b/metrics/src/vespa/metrics/namehash.cpp
deleted file mode 100644
index bd0b3a05697..00000000000
--- a/metrics/src/vespa/metrics/namehash.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-#include "namehash.h"
-#include "memoryconsumption.h"
-#include <vespa/vespalib/stllike/hash_set.h>
-
-namespace metrics {
-
-struct NameSet : public vespalib::hash_set<std::string> { };
-
-NameHash::NameHash()
- : _hash(std::make_unique<NameSet>()),
- _unifiedCounter(0),
- _checkedCounter(0)
-{ }
-
-NameHash::~NameHash() { }
-
-void
-NameHash::updateName(std::string& name) {
- ++_checkedCounter;
- NameSet::const_iterator it(_hash->find(name));
- if (it != _hash->end()) {
- if (name.c_str() != it->c_str()) {
- name = *it;
- ++_unifiedCounter;
- }
- } else {
- _hash->insert(name);
- }
-}
-
-void
-NameHash::addMemoryUsage(MemoryConsumption& mc) const {
- mc._nameHash += sizeof(NameHash)
- + _hash->getMemoryConsumption()
- - sizeof(NameSet);
- for (const std::string & name : *_hash) {
- mc._nameHashStrings += mc.getStringMemoryUsage(name, mc._nameHashUnique);
- }
-}
-
-} // metrics
diff --git a/metrics/src/vespa/metrics/namehash.h b/metrics/src/vespa/metrics/namehash.h
deleted file mode 100644
index 94b4c984f6b..00000000000
--- a/metrics/src/vespa/metrics/namehash.h
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-/**
- * \class metrics::NameHash
- * \ingroup metrics
- *
- * \brief Simple class to enable string reference counting to work better.
- *
- * When creating metrics, it is easy to use const char references from code,
- * for instance having a for loop setting up metrics for each thread, this will
- * not actually generate ref counted strings, but rather unique strings.
- *
- * Also, with ref counted strings, it is easy to screw it up if you access the
- * string in a way requiring copy.
- *
- * This class is used to just keep a set of strings, and having a class for
- * users to input their strings and get the "master" string with that content.
- *
- * Metrics use this after having registered metrics, to ensure we dont keep more
- * copies of non-unique strings than needed.
- */
-#pragma once
-
-#include "memoryconsumption.h"
-
-namespace metrics {
-
-class NameSet;
-
-class NameHash {
- std::unique_ptr<NameSet> _hash;
- uint32_t _unifiedCounter;
- uint32_t _checkedCounter;
-
-public:
- NameHash(const NameHash &) = delete;
- NameHash & operator = (const NameHash &) = delete;
- NameHash();
- ~NameHash();
-
- void updateName(std::string& name);
-
- uint32_t getUnifiedStringCount() const { return _unifiedCounter; }
- uint32_t getCheckedStringCount() const { return _checkedCounter; }
- void resetCounts() { _unifiedCounter = 0; _checkedCounter = 0; }
- void addMemoryUsage(MemoryConsumption& mc) const;
-};
-
-} // metrics