Gains de performances de Qt 5 par rapport à Qt 4
Une consommation de mémoire vingt fois moindre pour lancer une boucle d'événements

Le , par dourouc05, Responsable Qt
En ce qui concerne la robustesse et la sécurité, il vaut souvent mieux avoir plusieurs démons (services en terminologie Windows), plus ciblés, plutôt qu'une grosse application monolithique. Avec Qt 4, il était possible de choisir les modules que l'on souhaitait pour son application – ainsi, on pouvait avoir un démon sans GUI. Avec les considérations architecturales orientées plateformes embarquées et la modularisation de Qt 5, on atteint un autre niveau.

Si on prend une simple application Qt, sans interface graphique, qui ne fait que lancer une boucle d'événements et attend trois secondes, tant pour Qt 4 que Qt 5, on a ce code :

Code : Sélectionner tout
1
2
3
4
5
int main() { 
  QCoreApplication app(argc, argv); 
  QTimer::singleShot(3000, &app, SLOT(quit())); 
  return app.exec(); 
}
Sur une distribution Kubuntu 12.04, en 32 bits, avec Qt 4.8.1, massif (un outil disponible avec valgrind) reporte une utilisation mémoire maximale de 102 ko ; callgrind, un coût d'instructions d'approximativement 1,9 million (en ne comptant que les instructions exécutées dans main()). Avec Qt 5, le même massif sur le même système d'exploitation reporte une utilisation mémoire maximale de 4,9 ko (!), callgrind un coût de 114 000 (!). En d'autres termes, Qt 5 consomme vingt fois moins de mémoire et seize fois moins d'instructions pour instancier un objet QCoreApplication et lancer une boucle d'événements.

Qu'est-ce qui a changé depuis Qt 4 ? Principalement, la gestion des chaînes de caractères : Qt 5 considère que toutes sont en Unicode et ne charge les codecs associés à d'autres encodages que s'ils sont réellement nécessaires (leur chargement a aussi été amélioré, mais ne rien charger est toujours mieux). De même, C++11 est utilisé par endroits, ce qui fait qu'il n'y a pas besoin d'allocation pour instancier une QString contenant une chaîne Unicode.

Source : QCoreApplication mini benchmark.


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de bmoez.j bmoez.j - Nouveau Candidat au Club https://www.developpez.com
le 14/08/2012 à 18:42
donc KDE 5.X sera trés légère et rapide et sa grand probleme se résoudra?
Avatar de dourouc05 dourouc05 - Responsable Qt https://www.developpez.com
le 14/08/2012 à 20:20
Ça ne pourra pas lui faire de tort, mais toute application trop lourde et mal écrite dès le début restera lourde et mal écrite (ce qui n'est absolument pas le cas des dernières versions de KDE, d'après mon expérience personnelle).
Avatar de Daïmanu Daïmanu - Membre expérimenté https://www.developpez.com
le 14/08/2012 à 20:47
Et qu'en est il du temps de compilation ?
J'imagine qu'il doit être réduit vu les changements de QString et l'utilisation de C++11
Avatar de Gugelhupf Gugelhupf - Modérateur https://www.developpez.com
le 14/08/2012 à 21:02
Et qu'en est il du temps de compilation ?

16 fois moins d'instructions... 16 fois plus rapides ?

Est-ce que le temps de compilation est vraiment une contrainte par rapport au gain de mémoire énorme qu'apporte cette nouvelle version ? (encore faut-t-il que ces tests soient avérées dans 100% des cas).

Même s'il a prit du retard, vive C++11
Avatar de Squisqui Squisqui - En attente de confirmation mail https://www.developpez.com
le 14/08/2012 à 21:11
Citation Envoyé par dourouc05  Voir le message
(ce qui n'est absolument pas le cas des dernières versions de KDE, d'après mon expérience personnelle)

C'est un excellent gestionnaire de bureau, mais les développeurs se sont bien cassés les dents lors du passage 3.5 -> 4.0.
Je me demande comment ça se passera pour KDE 5.0
Avatar de LittleWhite LittleWhite - Responsable 2D/3D/Jeux https://www.developpez.com
le 15/08/2012 à 0:24
Citation Envoyé par Squisqui  Voir le message
C'est un excellent gestionnaire de bureau, mais les développeurs se sont bien cassés les dents lors du passage 3.5 -> 4.0.
Je me demande comment ça se passera pour KDE 5.0

Bah, normalement, le portage devrait être simplifié. Du moins, c'est ce que l'on nous annonçait du temps des Qt Developers Days en Octobre 2011. Juste un script permettant de transformer un code Qt 4 en code Qt 5 (changement de 2 / 3 entêtes et autres babioles). Donc, à cette époque (et je ne vois pas pourquoi cela changerai) la transition semblait beaucoup moins douloureuses que du temps de Qt 3 -> Qt 4.
En même temps, il faut dire que la transition Qt 3 -> Qt 4 avait été assez compliqué (beaucoup de changement dans l'architecture même de Qt et des classes à utiliser). Donc Nokia voulait rassurer les développeurs en disant qu'ils ne reproduiront pas cela.
Avatar de marc.collin marc.collin - Membre confirmé https://www.developpez.com
le 15/08/2012 à 10:21
Citation Envoyé par bmoez.j  Voir le message
donc KDE 5.X sera trés légère et rapide et sa grand probleme se résoudra?

En fait faut juste éviter d'utiliser kubuntu et kde tourne comme par magie beaucoup mieux.

Citation Envoyé par Squisqui
C'est un excellent gestionnaire de bureau, mais les développeurs se sont bien cassés les dents lors du passage 3.5 -> 4.0.
Je me demande comment ça se passera pour KDE 5.0

Il y a eu énormément de changement d'architecture ainsi que des concepts clés.

Certaines distribution s'en n'ont mieux sortie que d'autre en prenant ce qui fonctionnait sous kde 4 et lorsque ça ne fonctionnait pas avec la version 4, il optait pour la version 3.x

Suse a opté pour cette solution. Pas parfaite, mais l'utilisateur pouvait profiter de kde 4 sans tout les problèmes.....

Ce n'est pas vraiment ce qui est à l'ordre du jours pour kde 5.
Avatar de xelab xelab - Membre éprouvé https://www.developpez.com
le 16/08/2012 à 12:04
Citation Envoyé par marc.collin  Voir le message
En fait faut juste éviter d'utiliser kubuntu et kde tourne comme par magie beaucoup mieux.

Rhoo le troll , j'ai un kubuntu à jour qui tourne parfaitement bien chez moi.
Offres d'emploi IT
Spécialiste systèmes informatiques qualité et référent procédure H/F
Safran - Ile de France - Colombes (92700)
Ingénieur analyste programmeur (H/F)
Safran - Auvergne - Montluçon (03100)
Architecte technique des systèmes d'information H/F
Safran - Ile de France - Évry (91090)

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