Améliorations de performance de Qt Quick entre Qt 5.6 et 5.9
Des gains de l'ordre de 130 % avec une simple recompilation

Le , par dourouc05, Responsable Qt
L’un des intérêts premiers de Qt 5.9 était d’améliorer la performance, ce qui a notamment été réalisé sur la partie Qt Quick. Par rapport à Qt 5.6, les gains peuvent être monumentaux, notamment pour les plateformes ARM utilisant Linux (c’est-à-dire, principalement, des plateformes embarquées, proches des téléphones Android). Pour y arriver, les développeurs ont retravaillé le moteur d’exécution Qt Quick, le compilateur et les Qt Quick Controls, entre autres. La plupart des tests effectués pour éviter toute régression de performance sont disponibles en ligne.En termes de temps de démarrage (qui est souvent primordial dans les applications embarquées), du temps de Qt 5.6, la seule solution d’amélioration était le Qt Quick Compiler, commercial, qui compilait tout le code QML et JavaScript en C++. Depuis Qt 5.8, celui-ci est remplacé par un cache des fichiers QML et JS dans un format facile à charger : seul le premier démarrage est lent. Qt 5.9 apporte la possibilité de précalculer ce cache au moment de la compilation de l’application. Dans ce dernier cas, le temps de démarrage atteint celui du Qt Quick Compiler pour Qt 5.9 (mais améliore franchement la donne par rapport à la même solution dans le cas de Qt 5.6).




Les Qt Quick Controls 1 ont laissé leur place à la version 2 dès Qt 5.7. L’un des objectifs était justement d’améliorer la performance grandement, au détriment de la fonctionnalité dans les premières itérations (un écart qui se résorbe petit à petit). Pour l’utilisateur, la différence principale est que le style ne s’adapte pas à celui de la plateforme (avec bientôt des facilités pour définir son propre style) ; côté code, les Qt Quick Controls 2 utilisent du C++ aussi souvent que possible. Effectivement, les gains sont énormes : pour un ProgressBar, on peut ainsi afficher, sur le même matériel, presque sept fois plus d’images par seconde ! En moyenne, la performance a été améliorée d’un facteur six, pour un portage très rapide (l’API entre les deux versions n’a pas beaucoup évolué).



Qt 5.9 apporte aussi un cache des shaders, qui a un certain impact, y compris sur les applications Qt Quick qui en utilisent, jusqu’à un facteur sept après un premier démarrage.



Côté JavaScript, le moteur V4 a continué ses améliorations. Elles sont particulièrement visibles sur les plateformes ARM 64 bits (des temps d’exécution divisés par quatre), mais toutes en profitent (avec des améliorations de l’ordre de seize pour cent en ARM 32 bits). La raison principale est que Qt 5.9 gère complètement les plateformes ARM 64 bits, avec un moteur d’exécution bien mieux adapté.



De manière générale, entre Qt 5.6 et 5.9, outre ces améliorations spécifiques, la performance devrait être largement améliorée pour toutes les applications, avec une simple recompilation. Certaines pourraient profiter, globalement, d’améliorations de l’ordre de cent trente pour cent. En adaptant le code (c’est-à-dire en tirant parti des Qt Quick Controls 2), les gains pourraient être nettement plus importants.



Source et images : Performance Improvements with Qt 5.9 LTS.


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :
Offres d'emploi IT
Ingénieur QT
AMCUBE - Provence Alpes Côte d'Azur - Gargas (84400)
INGENIEUR DEVELOPPEUR C++ H/F
LE BUREAU RH - Bourgogne - Mâcon (71870)
Ingénieur Développeur logiciel H/F
Safran - Ile de France - Massy (91300)

Voir plus d'offres Voir la carte des offres IT
Responsable bénévole de la rubrique Qt : Thibaut Cuvelier -