IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Affichage des résultats du sondage: Votre expérience sur Qt ?

Votants
73. Vous ne pouvez pas participer à ce sondage.
  • Qt améliore la productivité et les performances

    28 38,36%
  • Qt améliore uniquement la productivité, à performances égales

    8 10,96%
  • Qt améliore uniquement la productivité, les performances sont dégradées

    2 2,74%
  • Je n'utilise pas encore Qt mais j'envisage de le faire

    12 16,44%
  • Je n'utilise pas Qt

    16 21,92%
  • Autre avis (précisez)

    1 1,37%
  • Sans avis

    6 8,22%
Qt Discussion :

Utiliser Qt peut-il améliorer les performances ? [Débat]


Sujet :

Qt

  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut Utiliser Qt peut-il améliorer les performances ?
    Bonjour,

    Qt est un framework de plus en plus utilisé. Cependant, à l'instar des frameworks PHP, il se pourrait que Qt ralentisse plus les applications développées que ce qu'il ne facilite le développement.

    Hors André, sur les Qt Labs, nous a produit un petit benchmark : pour séparer une chaine en plusieurs autres, il a comparé une version utilisant la librairie standard, et une autre utilisant Qt.

    Il en résulte que le code utilisant Qt est nettement plus court, plus lisible, plus rapide à compiler... et presque deux fois plus rapide !

    I wanted to do a certain bit of benchmarking for quite a while - years actually - but triggered by one of those friendly discussions on the ##c++ channel on FreeNode I finally figured I should sit down and actually do it. I was expecting some interesting results, but the not at the scale that we will see below.

    If you ask the resident channel bot on ##c++ how to tokenize a std::string you’ll get offered the following (slightly compacted) code snippet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      #include <sstream>
      #include <vector>
      #include <string>
     
      std::string str("abc:def");
      std::istringstream split(str);
      std::vector<std ::string> tokens;
      for (std::string each; std::getline(split, each, ':'); tokens.push_back(each));
    Obviously, that’s the “Without Qt” version: Clean Standard C++, as straight-forward as it can get. The contender “With Qt” is:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      #include <QString>
      #include <QStringList> 
     
      QString str("abc:def");
      QStringList tokens = str.split(':');
    From the source alone we can collect a few numbers:
    Property Without Qt With Qt Ratio
    Code to type 3 lines 1 line 3.0
    147 char 35 chars 4.2
    Code usable as sub-expression no yes
    Size of compilation unit [1] 22215 lines 7590 lines 2.9
    Compile time [2] 1.64s 1.02s 1.6

    To compare performance I use a benchmark that I just checked into the Qt source base, under tests/benchmark/qstringlist. It basically consists of running the above mentioned snippets on a string “unit:unit:unit:….” with 10, 100, 1000, and 10000 “unit” chunks and record callgrind’s “instruction loads per iteration” as follows:
    Chunk count Without Qt With Qt Ratio
    10 chunks 18,455 9,827 1.9
    100 chunks 134,578 71,008 1.9
    1000 chunks 1,244,425 641,174 1.9
    10000 chunks 13,161,115 7,053,633 1.9

    In this case, bigger numbers mean more time needed to execute. Interesting, isn’t it?

    After reading Thiago’s latest posts I got the impression that people like conclusions. The verbose version of a conclusion might be something along the lines of

    Using Qt’s functions to split a string you need about a third of the effort to write code, and get a 47% performance boost at runtime.

    Or shorter (Qt way): “Code less, create more”.

    André

    [1] Counted with “g++ -E -DQT_NO_STL -I$QTDIR/include/QtCore -I$QTDIR/include qt.cpp | wc” using g++ Ubuntu 4.3.3-5ubuntu4.

    [2] Fastest result of “real” time, out of 20 runs each. “user” times in both scenarios smaller, with similar ratio. Source

    Et vous ?
    Avez-vous l'impression qu'utiliser un framework tel que Qt peut ralentir, ou, au contraire, accélérer votre application ?
    Avez-vous déjà effectué de tels tests ? Les résultats sont-ils aussi convaincants ?
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  2. #2
    Membre averti Avatar de ZeRevo
    Inscrit en
    Avril 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2007
    Messages : 302
    Points : 342
    Points
    342
    Par défaut
    QT lave plus blanc que blanc !

    ils ont choisi cet exemple pour vendre leur produit.
    Je suis incapable de t'aider j'ai jamais travaillé avec QT

  3. #3
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut
    Citation Envoyé par ZeRevo Voir le message
    ils ont choisi cet exemple pour vendre leur produit.
    C'est pour ça que d'autres en vantent encore les mérites : http://zrusin.blogspot.com/2006/10/benchmarks.html.

    Ici, Qt 4.3, une vieille version de 2006, est comparé à d'autres librairies pour des affichage du même genre, et Qt, soit les dépasse, soit les écrase.

    Cependant, il est vrai que choisir de comparer à la STL, ce n'est pas l'idéal : les performances varient en fonction de l'implémentation du compilateur, il aurait fallu tester Qt contre plusieurs autres implémentations...
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par dourouc05 Voir le message
    il se pourrait que Qt ralentisse plus les applications développées que ce qu'il ne facilite le développement.
    C'est à dire? Pour un débutant, un gourou C++ ou le commun des mortels?

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Très difficile, je dirai comme question. En règle général je ne ressens pas de gêne sur les performances. En plus comme c'est de l'interface utilisateur, on se fout (un peu) des performances.
    Je dirai juste que j'ai jamais eu de problème avec Qt, et que je code relativement vite avec. Même les trucs difficile sont facile avec Qt ( Regexp, jeu avec les chaines, jeu avec les fichiers ).
    Par contre, si vous voulez vraiment un problème de ralentissement, n'ouvrait pas trop de QMovie, pour faire les animations des .gif ( ça bouffe du CPU ). ( bon faut dire que mon programme n'est pas optimisé ( ouverture de plusieur fois le même .gif ).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    Citation Envoyé par yan Voir le message
    C'est à dire? Pour un débutant, un gourou C++ ou le commun des mortels?
    Je crois que Yan résume bien la situation. De manière générale, le maximum de performance est obtenu en codant quelque chose de spécifique à l'application, tout en restant au plus bas niveau possible. La généricité et la flexibilité de Qt a forcément un coût.

    Cependant, pour coder un truc parfaitement optimisé, il faut avoir un groupe d'experts (le développeur moyen n'arriverait jamais au bout, ou ferait des erreurs). Donc l'utilisation de Qt (plutôt bien développé de manière générale) permet finalement au débutant de faire une application de bien meilleure qualité que s'il l'avait faite lui même. (Et bien sûr Qt permet de concevoir/développer ses applications plus aisément).

    Et compte tenu de la puissance moyenne des machines aujourd'hui, on préfère bien souvent privilégier un grand gain de temps à une petite perte de performances. (Seules quelques rares applications requièrent encore une optimisation particulière).

    G.
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

  7. #7
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    J'utilise Qt entre autres dans un projet où les perfs sont capitales, et il s'en sort plutôt bien

    Mais cela dépend de qui écrit le code, et de sa connaissance des subtilités de Qt, en règle générale.

  8. #8
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Je me demande surtout, que je ne comprend pas d'où viens le
    "Qt ralentisse plus les applications développées que ce qu'il ne facilite le développement."
    Mon ressentie c'est cela :
    * débutant : Il débute, donc pour lui performance ne représente rien. De plus avec toute les optimisations interne faite par Qt, il ne fera pas mieux dans un premier temps.
    * gourou c++ : faux, il exploitera correctement les optimisations.
    * le commun des mortels : possible. Tout dépend de la philosophie de codage du programmeur. Par exemple, un code sans aucun const sera surement moins rapide. Une personne qui ouvre une même image plusieurs fois pour une icône répété dans l'ihm, consommera plus de mémoire. Dans ces deux cas, le pattern Copy-on-write de Qt n'est pas exploité.

    Sainon, c'est toujours le problème des benchmark. Le résultat est toujours bancale. Il y as tellement de facteur qui rentre en jeux.

    Pour ce qui est des optimisation, voici quelques liens :
    http://qt.developpez.com/doc/4.5/shared/
    http://qt.developpez.com/doc/4.5/qshareddatapointer/
    http://qt.developpez.com/doc/4.5/qex...eddatapointer/

  9. #9
    Membre expérimenté Avatar de Firwen
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2009
    Messages : 472
    Points : 1 587
    Points
    1 587
    Par défaut
    Je pense que Qt peut améliorer les performances mais pas de la façon dont vous l'entendez.


    Qt a tendance à simplifier grandement le développement C++ qui est habituellement fui par les jeunes développeurs comme la peste noire .
    Un jeune développeur sur un projet qui opte pour une solution C++/Qt au lieu d'une solution en code managé ( C# / java / VB.NET / Groovy ) obtiendra "généralement" un gain en performance notable.

    Donc je dirais que le coté facile à prendre en main et la documentation excellente de Qt associé à son "code natif" permet indirectement d'améliorer les perfs d'un projets oui.
    It's not a bug, it's a feature

  10. #10
    Membre actif Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Points : 273
    Points
    273
    Par défaut
    Avis personnel:
    travaillant sur des bases de systèmes temps réel, avec acquisitions hautes fréquences, sur des machines pas spécialement rapides, je dois dire que Qt convainc pour l'instant, en tout cas il ne fait pas pire que VS avec les MFC.

    Comme dis plus haut, c'est d'abord une question de codage

  11. #11
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    j'ai voté "Qt améliore la productivité et les performances" car je commence à maitriser le framework et à jouer avec les optimisations qu'il fournies.

  12. #12
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut
    Citation Envoyé par yan Voir le message
    j'ai voté "Qt améliore la productivité et les performances" car je commence à maitriser le framework et à jouer avec les optimisations qu'il fournies.
    J'ai voté très exactement la même chose : le développement avec Qt est beaucoup plus facile que sans, et je ne vois pas encore d'énormes différences de perfs (je ne passe pas ma vie en benchmarks, sauf quand les perfs sont importantes).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  13. #13
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Je pense de toute manière que Qt s'impose petit à petit comme LE framework graphique & co, sur la plupart des plans.

  14. #14
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Alp Voir le message
    Je pense de toute manière que Qt s'impose petit à petit comme LE framework graphique & co, sur la plupart des plans.
    suffit de voir les dernie rpost de QtLabs
    http://labs.trolltech.com/blogs/2009...scopedpointer/
    http://labs.trolltech.com/blogs/2009...-does-qt-have/
    http://labs.trolltech.com/blogs/2009...more-pointing/

    Y as des chose très intéressante

  15. #15
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Toi t'es fan des smart pointers à la Qt

    Mais sinon oui, et avec PySide, l'étendue croissante sur le mobile, etc, ça commence vraiment à prendre le large

  16. #16
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Alp Voir le message
    Toi t'es fan des smart pointers à la Qt
    Des smart ptr tous court
    moins de pointeur == moins de problème
    Donc s'il faut en utiliser autant utiliser les outils adapté

  17. #17
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Citation Envoyé par yan Voir le message
    Des smart ptr tous court
    moins de pointeur == moins de problème
    Donc s'il faut en utiliser autant utiliser les outils adapté
    Oui oui, c'est dans le courant C++ et Qt suit très bien

  18. #18
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par Alp Voir le message
    Je pense de toute manière que Qt s'impose petit à petit comme LE framework graphique & co, sur la plupart des plans.
    Faudrait préciser à quel niveau, parce que de mon point de vue, c'est plus GTK+

    Les derniers exemples d'utilisation :
    • Chromium/Chrome (version Linux)
    • Nero Linux 3
    • Ultraedit pour Linux


    Pour Qt :
    • VLC

  19. #19
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Pour Qt :
    • VLC
    • Google Earth™
    • Skype
    • Adobe Photoshop Album®
    • ...


    source

    maemo choisi Qt pour le futur
    Le choix du passage à Qt a été motivé par les performances (important pour l'embarqué) et car il résoud des problèmes que Maemo et GNOME ne pouvait résoudre avec GTK+. Qt offre aussi un avantage en terme d'audience puisque les applications Qt peuvent fonctionner sur Linux et Symbian.
    source

  20. #20
    Membre averti Avatar de ZeRevo
    Inscrit en
    Avril 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2007
    Messages : 302
    Points : 342
    Points
    342
    Par défaut
    ne pouvait résoudre avec GTK+
    C'est le genre d'annonce qui sert à rien vu qu'il n'y a pas d'arguments précis.

Discussions similaires

  1. Améliorer les performances d'Hibernate
    Par minimarch76 dans le forum Persistance des données
    Réponses: 4
    Dernier message: 22/08/2007, 10h01
  2. Optimisation de jsp pour améliorer les performances
    Par djuddju dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 01/12/2006, 05h50
  3. Réponses: 2
    Dernier message: 01/08/2006, 10h20
  4. [IW][D7] améliorer les performances
    Par Magnus dans le forum Bases de données
    Réponses: 19
    Dernier message: 11/10/2005, 20h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo