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>
This commit is contained in:
parent
39df773eb5
commit
8fb040b6c0
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user