Qt 5.12 n’est pas encore sorti, mais les détails sont finalisés depuis un certain temps, comme la priorité sur la performance de l’environnement Qt Quick : le moteur QML et l’interpréteur JavaScript. Qt 5.9 (la précédente version LTS) avait déjà apporté pas mal de choses à ce niveau, le travail a continué depuis lors, notamment au niveau de la consommation de mémoire.

Pour cela, les développeurs d’applications peuvent changer beaucoup de choses (avec Qt Lite pour enlever les fonctionnalités inutiles ou une gestion plus fine des ressources), mais pas le fonctionnement interne du moteur. C’est pour cela qu’une des plus grandes améliorations de performance de Qt 5.12 concerne les structures de données utilisées pour le code QML/JS compilé à l’avance (en même temps que le code C++). En effet, dans ce cas, le moteur QML n’exécute pas le code et ne peut pas, par exemple, déterminer les types de toutes les variables. Le moteur QML doit alors terminer certains traitements lors du chargement de ces fichiers, des traitements qui ont été retravaillés : désormais, les fichiers de cache contiennent aussi le tableau des chaînes de caractères (qui ne doit plus être recréé au chargement) ; les autres structures de données ont été repensées pour prendre moins de place (tant sur disque qu’en mémoire). L’effet est assez direct en comparaison avec Qt 5.6 et Qt 5.9 (sauf par rapport au Qt Quick Compiler).


Le moteur JavaScript a été aussi complètement repensé avec une toute nouvelle architecture (arrivée avec Qt 5.11). Le compilateur travaille désormais sans arbre syntaxique (AST) et génère directement du code binaire depuis le fichier JavaScript, un code binaire indépendant de la plateforme. Celui-ci peut être interprété directement ou après quelques optimisations assez simples… ou bien optimisé lors d’une étape de compilation juste à temps (JIT). Même sans ce JIT, le nouveau moteur est beaucoup plus rapide à l’exécution que précédemment, malgré la quantité de fonctionnalités de JavaScript implémentées en plus (ECMAScript 7 au lieu de 5.1).


Source : Qt Quick Performance Improvements with Qt 5.12 LTS.