summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Fernengel <harald.fernengel@nokia.com>2012-07-27 11:53:46 +0200
committerQt by Nokia <qt-info@nokia.com>2012-08-01 00:14:41 +0200
commit8fb040b6c03ef2725419bfa7c9d58d21f2270b85 (patch)
treeafc7dc68d12072200a5d3a1fb8ae3d2bbc8e28b8
parent39df773eb5926621d1a742ed5af574933028b2a8 (diff)
Lazy initialize library paths
For a lot of command line tools, library loading is not required, so don't waste a lot of time computing them. According to callgrind, this makes the QCoreApplication constructor factor 6 faster, and also removes a lot of stat() calls and other file system access. Change-Id: I0211f5303712fa0dcfc4168cce7025283c63c9d1 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index 58d8957812..4c1f159552 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -403,8 +403,9 @@ void QCoreApplicationPrivate::appendApplicationPathToLibraryPaths()
{
#ifndef QT_NO_LIBRARY
QStringList *app_libpaths = coreappdata()->app_libpaths;
- Q_ASSERT(app_libpaths);
- QString app_location( QCoreApplication::applicationFilePath() );
+ if (!app_libpaths)
+ coreappdata()->app_libpaths = app_libpaths = new QStringList;
+ QString app_location = QCoreApplication::applicationFilePath();
app_location.truncate(app_location.lastIndexOf(QLatin1Char('/')));
app_location = QDir(app_location).canonicalPath();
if (QFile::exists(app_location) && !app_libpaths->contains(app_location))
@@ -589,12 +590,8 @@ void QCoreApplication::init()
d->threadData->eventDispatcher = QCoreApplicationPrivate::eventDispatcher;
#ifndef QT_NO_LIBRARY
- if (!coreappdata()->app_libpaths) {
- // make sure that library paths is initialized
- libraryPaths();
- } else {
+ if (coreappdata()->app_libpaths)
d->appendApplicationPathToLibraryPaths();
- }
#endif
#ifdef QT_EVAL