diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-07-28 16:31:04 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2014-07-28 16:48:20 +0200 |
commit | f185005c0ff34b2e477b2d2159e58837474fc3cc (patch) | |
tree | 7862fa4ffd75f1a01c5bec4f7664da37187def9e /src/lib/corelib/language/moduleloader.cpp | |
parent | a9350ebcb713d89bde8a9221d15aa1ead8976221 (diff) |
fix speed regression
Commit 9297ea217284e2279f2d4471b3f8fc754dc5fe71 introduced a speed
penalty. This is a quasi-revert of said commit.
Change-Id: Ia0b0741cf818a9867f127a25830630fb3ea352ff
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'src/lib/corelib/language/moduleloader.cpp')
-rw-r--r-- | src/lib/corelib/language/moduleloader.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp index 4d22e5efd..1e2c66c9a 100644 --- a/src/lib/corelib/language/moduleloader.cpp +++ b/src/lib/corelib/language/moduleloader.cpp @@ -112,6 +112,7 @@ ModuleLoaderResult ModuleLoader::load(const SetupProjectParameters ¶meters) m_logger.qbsTrace() << "[MODLDR] load" << parameters.projectFilePath(); m_parameters = parameters; m_validItemPropertyNamesPerItem.clear(); + m_globalModuleItemCache.clear(); m_disabledItems.clear(); ModuleLoaderResult result; @@ -866,7 +867,7 @@ Item *ModuleLoader::loadModuleFile(ProductContext *productContext, const QString if (m_logger.traceEnabled()) m_logger.qbsTrace() << "[MODLDR] trying to load " << fullModuleName << " from " << filePath; - const ContextBase::ModuleItemCache::key_type cacheKey(filePath, productContext->profileName); + const ModuleItemCache::key_type cacheKey(filePath, productContext->profileName); Item *module = productContext->moduleItemCache.value(cacheKey); if (module) { m_logger.qbsTrace() << "[LDR] loadModuleFile cache hit for " << filePath; @@ -883,7 +884,11 @@ Item *ModuleLoader::loadModuleFile(ProductContext *productContext, const QString m_logger.qbsTrace() << "[LDR] loadModuleFile " << filePath; *cacheHit = false; - module = m_reader->readFile(filePath); + module = m_globalModuleItemCache.value(cacheKey); + if (!module) { + module = m_reader->readFile(filePath); + m_globalModuleItemCache.insert(cacheKey, module); + } if (!isBaseModule) { DependsContext dependsContext; dependsContext.product = productContext; |