From 68affbdc60b6cc48b6e7786ffffe2b7512cade64 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Thu, 25 Nov 2010 11:42:57 +0100 Subject: fix performance penalty in Win32MakefileGenerator::findHighestVersion Don't scan Qt's lib dir over and over again. Task-number: QTBUG-15595 Reviewed-by: ossi --- qmake/generators/win32/winmakefile.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp index 5f56d66..8cf970e 100644 --- a/qmake/generators/win32/winmakefile.cpp +++ b/qmake/generators/win32/winmakefile.cpp @@ -78,8 +78,14 @@ Win32MakefileGenerator::findHighestVersion(const QString &d, const QString &stem int biggest=-1; if(!project->isActiveConfig("no_versionlink")) { - QDir dir(bd); - QStringList entries = dir.entryList(); + static QHash dirEntryListCache; + QStringList entries = dirEntryListCache.value(bd); + if (entries.isEmpty()) { + QDir dir(bd); + entries = dir.entryList(); + dirEntryListCache.insert(bd, entries); + } + QRegExp regx(QString("((lib)?%1([0-9]*)).(%2|prl)$").arg(dllStem).arg(ext), Qt::CaseInsensitive); for(QStringList::Iterator it = entries.begin(); it != entries.end(); ++it) { if(regx.exactMatch((*it))) { -- cgit v0.12