Details
-
Bug
-
Resolution: Unresolved
-
P2: Important
-
None
-
Qt Creator 4.15.1, Qt Creator 5.0.0-beta1
-
None
Description
- open qt-creator/CMakeLists.txt as a project in Qt Creator
- wait for it to configure/scan/parse QML (don't have to wait for C++ parsing)
- trigger Build > Run CMake
- wait for configuration to finish
- notice the freeze at that point
The freeze is due to several things happening in Qt Creator in the main thread that shouldn't happen there. There are patches for some of these things already in master branch or in review.
One 0.5-1 second part of the freeze is due to QmlJS::ModelManagerInterface::updateProjectInfo
Round about 3/4 of that time is spent in ModelManagerInterface::updateImportPaths(), and almost all of that time is spent in QmlJS::modulePaths.
A small part there is spent with the QRegularExpression, and the larger part is QDir::exists() - modulePaths is called about 3000 times (multiple times for each of the ~1600 QML files that are part of the snapshot after first parse) when reconfiguring Qt Creator, resulting in ~25000 calls of QDir::exists().
Attachments
Issue Links
- relates to
-
QTCREATORBUG-26178 Freeze when trying to close .qml file
- Closed
Gerrit Reviews
For Gerrit Dashboard: QTCREATORBUG-25899 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
356311,2 | QmlJS: Don't use QRegularExpression for trivial string operation | master | qt-creator/qt-creator | Status: ABANDONED | 0 | 0 |
364702,2 | QmlJS: Destroy local snapshot before modifying its original | 5.0 | qt-creator/qt-creator | Status: MERGED | +2 | 0 |
369084,3 | QmlJS: Fix issues with getting modulePaths | 5.0 | qt-creator/qt-creator | Status: MERGED | +2 | 0 |