Details
-
User Story
-
Resolution: Done
-
Not Evaluated
-
None
-
-
Qt Installer Sprint 65, Qt Installer Sprint 66, Qt Installer Sprint 67
Description
Some background (Windows):
- 13000+ control scripts to be evaluated (passed to QJSEngine)
- if selecting all repository categories in the online installer, depends also on your license
- this number is growing with each Qt/B2Qt/etc. release
- Each meta.7z containing the control (.qs) script is downloaded first (using multiple threads)
- Each meta.7z is then extracted, in parallel
- Evaluation of the scripts is done one by one
- scripts (the installer components they belong to) may have dependencies
- this takes roughly 3 minutes
Currently, the worst-case scenario is on Windows when selecting all categories. It takes about ~8 mins to download, extract and evaluate all the 13000+ scripts, of which ~3 mins is for the evaluation (QJSEngine).
Suggestions on how to improve the situation:
- Run the whole thing with profiler to check where time is actually spent
- keeping and re-using the *.jsc cache files the JS engine creates in the process
- minimize wrapping and unwrapping QObjects into and out of QJSValue
- run multiple QJSEngine instances in parallel
Attachments
Issue Links
- is required for
-
QTIFW-2805 Performance optimisations for the IFW
- Closed
For Gerrit Dashboard: QTIFW-2790 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
436055,6 | Optimize retrieving components by name | master | installer-framework/installer-framework | Status: MERGED | +2 | 0 |
437373,4 | Optimize keeping component reference count in InstallerCalculator | master | installer-framework/installer-framework | Status: MERGED | +2 | 0 |
439949,6 | InstallerProxy: optimize querying components by name | master | installer-framework/installer-framework | Status: MERGED | +2 | 0 |