summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2015-12-27 01:33:38 +0100
committerJulian Andres Klode <jak@debian.org>2015-12-27 01:46:06 +0100
commite9185eca390435b4060ef26c7c69d39f994da7a7 (patch)
treed77ecc772e65180b9ff0bad0a5a6961b7e60d426
parent74dedb4ae28fd4f7c89bf769708d4f7edc7ed79a (diff)
pkgcachegen: Use std::unordered_map instead of std::map
std::unordered_map is faster than std::map in our use case, reducing cache generation time by about 10% in my benchmark.
-rw-r--r--apt-pkg/pkgcachegen.cc4
-rw-r--r--apt-pkg/pkgcachegen.h10
2 files changed, 7 insertions, 7 deletions
diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc
index 61f7a1124..e7bdc615b 100644
--- a/apt-pkg/pkgcachegen.cc
+++ b/apt-pkg/pkgcachegen.cc
@@ -1253,7 +1253,7 @@ map_stringitem_t pkgCacheGenerator::StoreString(enum StringType const type, cons
{
std::string const key(S, Size);
- std::map<std::string,map_stringitem_t> * strings;
+ std::unordered_map<std::string,map_stringitem_t> * strings;
switch(type) {
case MIXED: strings = &strMixed; break;
case PKGNAME: strings = &strPkgNames; break;
@@ -1262,7 +1262,7 @@ map_stringitem_t pkgCacheGenerator::StoreString(enum StringType const type, cons
default: _error->Fatal("Unknown enum type used for string storage of '%s'", key.c_str()); return 0;
}
- std::map<std::string,map_stringitem_t>::const_iterator const item = strings->find(key);
+ std::unordered_map<std::string,map_stringitem_t>::const_iterator const item = strings->find(key);
if (item != strings->end())
return item->second;
diff --git a/apt-pkg/pkgcachegen.h b/apt-pkg/pkgcachegen.h
index 328d296bf..9001e334f 100644
--- a/apt-pkg/pkgcachegen.h
+++ b/apt-pkg/pkgcachegen.h
@@ -26,7 +26,7 @@
#include <vector>
#include <string>
-#include <map>
+#include <unordered_map>
class FileFd;
class pkgSourceList;
@@ -41,10 +41,10 @@ class APT_HIDDEN pkgCacheGenerator /*{{{*/
APT_HIDDEN map_stringitem_t WriteStringInMap(const char *String, const unsigned long &Len);
APT_HIDDEN map_pointer_t AllocateInMap(const unsigned long &size);
- std::map<std::string,map_stringitem_t> strMixed;
- std::map<std::string,map_stringitem_t> strSections;
- std::map<std::string,map_stringitem_t> strPkgNames;
- std::map<std::string,map_stringitem_t> strVersions;
+ std::unordered_map<std::string,map_stringitem_t> strMixed;
+ std::unordered_map<std::string,map_stringitem_t> strSections;
+ std::unordered_map<std::string,map_stringitem_t> strPkgNames;
+ std::unordered_map<std::string,map_stringitem_t> strVersions;
friend class pkgCacheListParser;
typedef pkgCacheListParser ListParser;