summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-04-08 20:32:49 +0200
committerRobin Gareus <robin@gareus.org>2016-04-08 20:32:49 +0200
commitd1dcedaccfd5adfd661724476003410d5d251756 (patch)
tree076b2626cd294e8eaf8bdd1bc87e167b41edab83
parent6dd5d6df71acc5eacab5ef2e1b500b123ede4254 (diff)
experimental session-save speedup
property order is not important, unordered_map lookup and insertion is O(1)
-rw-r--r--libs/pbd/pbd/xml++.h4
-rw-r--r--libs/pbd/xml++.cc6
2 files changed, 5 insertions, 5 deletions
diff --git a/libs/pbd/pbd/xml++.h b/libs/pbd/pbd/xml++.h
index 8e0e015870..7b8649873a 100644
--- a/libs/pbd/pbd/xml++.h
+++ b/libs/pbd/pbd/xml++.h
@@ -29,7 +29,7 @@
#include <string>
#include <list>
-#include <map>
+#include <unordered_map>
#include <cstdio>
#include <cstdarg>
@@ -50,7 +50,7 @@ typedef XMLNodeList::const_iterator XMLNodeConstIterator;
typedef std::list<XMLProperty*> XMLPropertyList;
typedef XMLPropertyList::iterator XMLPropertyIterator;
typedef XMLPropertyList::const_iterator XMLPropertyConstIterator;
-typedef std::map<std::string, XMLProperty*> XMLPropertyMap;
+typedef std::unordered_map<std::string, XMLProperty*> XMLPropertyMap;
class LIBPBD_API XMLTree {
public:
diff --git a/libs/pbd/xml++.cc b/libs/pbd/xml++.cc
index 963531c5f5..cc583fe86e 100644
--- a/libs/pbd/xml++.cc
+++ b/libs/pbd/xml++.cc
@@ -408,7 +408,7 @@ XMLProperty*
XMLNode::property(const char* n)
{
string ns(n);
- map<string,XMLProperty*>::iterator iter;
+ unordered_map<string,XMLProperty*>::iterator iter;
if ((iter = _propmap.find(ns)) != _propmap.end()) {
return iter->second;
@@ -420,7 +420,7 @@ XMLNode::property(const char* n)
XMLProperty*
XMLNode::property(const string& ns)
{
- map<string,XMLProperty*>::iterator iter;
+ unordered_map<string,XMLProperty*>::iterator iter;
if ((iter = _propmap.find(ns)) != _propmap.end()) {
return iter->second;
@@ -433,7 +433,7 @@ XMLProperty*
XMLNode::add_property(const char* n, const string& v)
{
string ns(n);
- map<string,XMLProperty*>::iterator iter;
+ unordered_map<string,XMLProperty*>::iterator iter;
if ((iter = _propmap.find(ns)) != _propmap.end()) {
iter->second->set_value (v);