diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2014-08-04 17:30:43 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2014-08-04 18:02:15 +0200 |
commit | b3e24353733f613df3465f20c520d5b055c4483c (patch) | |
tree | 5c100dc9b9580c9be166194fe70d3efaff56bb88 /src/lib/corelib/language | |
parent | 1b3713039c04b3aaa5e2071d38f0b2da96555775 (diff) |
Be smarter about storing property maps.
The current code just dumps such maps into the file via the ">>"
operator, so no strings are shared. This patch fixes that.
Example results for building Qt Creator:
Size of build graph on disk: ~65 MB -> ~34 MB.
Size of build graph in memory: ~250MB -> ~150 MB.
Change-Id: Ic89d0f6c37ba1cd7b3aa8a35517bb6a6a37061c2
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src/lib/corelib/language')
-rw-r--r-- | src/lib/corelib/language/language.cpp | 8 | ||||
-rw-r--r-- | src/lib/corelib/language/propertymapinternal.cpp | 4 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/lib/corelib/language/language.cpp b/src/lib/corelib/language/language.cpp index 20ef70b52..5c5fac445 100644 --- a/src/lib/corelib/language/language.cpp +++ b/src/lib/corelib/language/language.cpp @@ -468,7 +468,7 @@ void ResolvedProduct::load(PersistentPool &pool) >> sourceDirectory >> destinationDirectory >> location; - pool.stream() >> productProperties; + productProperties = pool.loadVariantMap(); moduleProperties = pool.idLoadS<PropertyMapInternal>(); pool.loadContainerS(rules); pool.loadContainerS(dependencies); @@ -493,7 +493,7 @@ void ResolvedProduct::store(PersistentPool &pool) const << destinationDirectory << location; - pool.stream() << productProperties; + pool.store(productProperties); pool.store(moduleProperties); pool.storeContainer(rules); pool.storeContainer(dependencies); @@ -837,7 +837,7 @@ void ResolvedProject::load(PersistentPool &pool) subProjects.append(p); } - pool.stream() >> m_projectProperties; + m_projectProperties = pool.loadVariantMap(); } void ResolvedProject::store(PersistentPool &pool) const @@ -852,7 +852,7 @@ void ResolvedProject::store(PersistentPool &pool) const pool.stream() << subProjects.count(); foreach (const ResolvedProjectConstPtr &project, subProjects) pool.store(project); - pool.stream() << m_projectProperties; + pool.store(m_projectProperties); } diff --git a/src/lib/corelib/language/propertymapinternal.cpp b/src/lib/corelib/language/propertymapinternal.cpp index 89515e74e..31da2dcd3 100644 --- a/src/lib/corelib/language/propertymapinternal.cpp +++ b/src/lib/corelib/language/propertymapinternal.cpp @@ -93,12 +93,12 @@ QString PropertyMapInternal::toJSLiteral() const void PropertyMapInternal::load(PersistentPool &pool) { - pool.stream() >> m_value; + m_value = pool.loadVariantMap(); } void PropertyMapInternal::store(PersistentPool &pool) const { - pool.stream() << m_value; + pool.store(m_value); } } // namespace Internal |