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

Qt Quick Discussion :

Qt Quick ou JavaFX ?


Sujet :

Qt Quick

  1. #21
    Membre averti
    Mouais. Bof. Si j'ai des applications Java qui sont lentes et d'autres qui sont correctes en termes de rapidité, je ne vais pas dire que c'est le Java le problème, mais plutôt les devs qui ont écrit ces applis.
    (et remarque, je suis un C++ien convaincu, qui déteste le Java. Mais on peut pas reprocher au langage les erreurs des devs)
    Pour poser des questions ou simplement discuter informatique, vous pouvez rejoindre le discord NaN.

  2. #22
    Membre éprouvé
    mais si eclipse a fait SWT en son temps c'est qu'il y avait bien un problème de lenteur.
    OxygenXML je l'utilise tout le temps, j'en suis content, il est écrit en Java, et on ressent une certaine lenteur quand même. Je ne pense pas qu'elle soit mal programmée.
    tu prenais c# au debut vs VB/MFC/etc, on voyait une sacré différence de rapidité entre les deux

  3. #23
    Membre éprouvé
    Epilogue
    Je trouvais qu'il manquait un epilogue à ce thread, alors voila.
    J'ai finalement pris Java puis rapidement Kotlin avec intellij et j'ai fait l'interface en javafx.
    J'ai vraiment codé rapidement, et le jdbc est vraiment pratique vu que toutes les dbs le proposent.
    Au final, mes apps ne sont pas lentes et peuvent tourner sans exe et sans install.
    donc c'etait vraiment tout gagnant.

    j'ai recemment commencé une toute petite app sur Qt/quick, pour faire une equivalence d'un autre petit programme ecrit en javafx et Kotlin (avec coroutine).

    En Qt, j'ai deux classes Qt juste pour faire l'action en asynchrone, puis j'ai buté sur comment transféré une structure coté QML (finalement je viens de voir qu'on peut utiliser Q_GADGET sur une structure/class). Bon au final, j'ai transmis un QVariant mais je n'ai plus de type (et sonc d'intellisense) coté QML. J'aurais pu utiliser QWidget mais comme QtQuick c'est le futur (c'est vendu comme ca du moins) j'ai voulu faire. Bon ca ne m'a pas deplu, mais je n'etais plus habitué à faire autant d'effort pour juste un traitement asynchrone.

    en javafx, j'ai fait mon xml pour la presentation, puis mon controller en kotlin, et une coroutine pour le traitement asynchrone. tres simple et resultat tres propre.

    Au final ce que j'en pense, c'est que j'en viens à me demander si je devrais utiliser C++ dans le futur. (Edit: Je connais très bien le C++)
    Je ne suis pas sûr, on perd un temps fou dans des details, et aussi une erreur decompil soudain apparait, longure de 3 km. ha oui fallait faire "run qmake" pour regenerer le makefile. (j'ai perdu un certain temps).

    J'ai oublié de vous dire que j'ai aussi fait ce programme en cocoa objective C++, et la c'est OK, plus de probleme d'interface vraiment, c'est assez simple, le cote asynchrone avec grand central dispatch, le coté c++ va encore, xcode est mieux que Qt creator (Qt Creator a fait d'enormes progres dans intellisense, c'est remarquable). Franchement cocoa est un des meilleur framework graphique (pour moi peut etre le meilleur)

    donc mon avis, c'est de prendre Kotlin, ou bien cocoa si c'est mac only. Si on veut le C++ pour des raisons de memoire (je dis pas les perf car j'ai vu que java n'etait pas lent, bien au contraire, par contre qu'est ce ca consomme de la RAM...) et multiplateforme, alors Qt. Maintenant QtQuick (2 mondes c++ javascript) ou QtWidget, Qt quick est pas mal, et peut aussi etre sur mobile, mais cette separation peut être embetante. Et finalement de nos jours, le garbage collector est vraiment appreciable, surtout avec les lambdas et le multithread où savoir qui est le owner est vraiment délicat.

    edit: j'ai fait encore des tests, et je regardais la consommation memoire sur des lists de 5 milliards d'elements (avec un algo d'intersection sur deux lists) et la le java consomme 4,5 GB quand c++ consomme 240 MB
    ca fait reflechir... non?

  4. #24
    Membre averti
    Je n'ai jamais été fan de ce genre de comparaison entre langages. Par ce que généralement, ce n'est pas très pertinent. Chaque langage a ses idiomes, ses pratiques, se pièges, une courbe d'apprentissage spécifique. Je suis sur qu'un dev Java expérimenté pourra te corriger ton code pour que tes listes ne prennent pas plusieurs Go. Et pour un dev C++, utiliser des list fait généralement dresser les cheveux sur la tête.

    Le C++ est connu pour avoir une courbe d'apprentissage plus dur que les autres langages. S'amuser à refaire une appli avec différents langages que tu ne maîtrises pas, je ne suis pas surpris que tu as eu des difficultés avec le C++. Et c'est effectivement un bon conseil pour les débutants : si vous ne voulez/pouvez pas prendre le temps d'étudier correctement le C++ avant de vous lancer la création d'une appli, il ne vaut pas choisir le C++.
    Pour poser des questions ou simplement discuter informatique, vous pouvez rejoindre le discord NaN.

  5. #25
    Membre éprouvé
    Citation Envoyé par mintho carmo Voir le message
    Je n'ai jamais été fan de ce genre de comparaison entre langages. Par ce que généralement, ce n'est pas très pertinent. Chaque langage a ses idiomes, ses pratiques, se pièges, une courbe d'apprentissage spécifique. Je suis sur qu'un dev Java expérimenté pourra te corriger ton code pour que tes listes ne prennent pas plusieurs Go. Et pour un dev C++, utiliser des list fait généralement dresser les cheveux sur la tête.
    Je suis un DEV java expérimenté, et là le but de l'exercice etait de faire un algo sur 2 listes d'entier. Et pourquoi ca ferait dresser les cheveux sur la tête d'utiliser des listes d'entier ? explique. Dans ce cas précis j'ai poussé le vice à plusieurs milliards millions d'elements, ce qui devrait rarement arriver, mais c'est pour voir comment le temps d'execution et l'occupation memoire evoluent.

    Citation Envoyé par mintho carmo Voir le message

    Le C++ est connu pour avoir une courbe d'apprentissage plus dur que les autres langages. S'amuser à refaire une appli avec différents langages que tu ne maîtrises pas, je ne suis pas surpris que tu as eu des difficultés avec le C++. Et c'est effectivement un bon conseil pour les débutants : si vous ne voulez/pouvez pas prendre le temps d'étudier correctement le C++ avant de vous lancer la création d'une appli, il ne vaut pas choisir le C++.
    Je n'ai aucun problème en C++ (deja realisé un soft 3D opengl). Le but de l'exercice etait de faire une action asynchrone dans les 3 implementations (Kotlin/JavaFx, Cocoa/Objective C++ et Qt). J'ai donné mon retour d'experience sur les 3 implementations et j'ai voulu aussi donner un autre point de vue, celui de l'occupation mémoire. C'est pas nouveau, mais j'ai été particulierement choqué de la différence, et j'ai trouvé cela utile de le partager.

    Honnetement, plutot que de sortir des reflexions pareilles, tu devrais peut etre partager tes propres experiences.

  6. #26
    Membre averti
    Citation Envoyé par epsilon68 Voir le message
    Je suis un DEV java expérimenté, et là le but de l'exercice etait de faire un algo sur 2 listes d'entier. Et pourquoi ca ferait dresser les cheveux sur la tête d'utiliser des listes d'entier ? explique. Dans ce cas précis j'ai poussé le vice à plusieurs milliards d'elements, ce qui devrait rarement arriver, mais c'est pour voir comment le temps d'execution et l'occupation memoire evoluent.
    Parce que si tu parles de std::list, c'est pas du tout cache-friendly.

    Citation Envoyé par epsilon68 Voir le message
    tu devrais peut etre partager tes propres experiences.
    C'est ce que j'ai fait : de ma propre expérience, ce genre de comparaison n'est pas pertinent.
    Pour poser des questions ou simplement discuter informatique, vous pouvez rejoindre le discord NaN.

  7. #27
    Membre éprouvé
    Citation Envoyé par mintho carmo Voir le message
    Parce que si tu parles de std::list, c'est pas du tout cache-friendly.
    en c++ j'ai pris des std::vector et en Kotlin des ArrayList...
    c'est ce qu'on appelle des listes d'entiers, je n'avais pas précisé, et je n'avais pas non plus vraiment parlé de performance, j'avais plutot insisté sur la consommation mémoire. Et puisque tu en parles, Java etait plus rapide sur l'algorithme d'intersection mais hyper lent sur la génération des nombres aléatoires.

    mais je dirais que la perf etait un detail, je n'en ai meme pas parlé et rien précisé. Et je ne rendrais pas les sources public.

    Citation Envoyé par mintho carmo Voir le message
    C'est ce que j'ai fait : de ma propre expérience, ce genre de comparaison n'est pas pertinent.
    non tu as rien fait justement, tu as lu de travers, tu as supposé des choses fausses et rien n'était constructif. D'ailleurs je me disais, en lisant ton commentaire, si ca valait vraiment le coup de partager son expérience pour qu'elle soit reçu de cette facon. (les devs confirmés ne feraient jamais ca, pourquoi tu apprends pas le c++ avant de programmer? c'est nul les listes d'int, ca sert a rien de comparer les langages)

    je t'encourage à partager ton experience, et à subir ce même genre de commentaire dé-constructif.

  8. #28
    Membre averti
    Citation Envoyé par epsilon68 Voir le message
    tu as supposé des choses fausses et rien n'était constructif
    Je demande le vote du public, mais je ne connais pas beaucoup de devs C++ qui parlerait de "liste" pour parlait de std::vector.

    Et je parlais aussi de consomation mémoire, qui est très différente entre std::vector et std::list.

    Citation Envoyé par epsilon68 Voir le message
    je t'encourage à partager ton experience, et à subir ce même genre de commentaire dé-constructif
    Partager des "analyses" personnelles de comparaison de quelques tests, je l'ai déjà fait. Sur des questions techniques, en donnant toutes les informations qui permettent de comprendre correctement ce qui est fait, pourquoi et ce que j'en conclue. Pour avoir des analyses différentes, avoir une vision plus large des problématiques.

    Mais le type de comparaison que tu fais dépend beaucoup des compétences du dev, de son expérience sur les langages et les frameworks, le type d'application, etc. C'est totalement subjectif et à part dire "moi je préfère ça", c'est impossible à transposer à une autre personne. Dit autrement, si quelqu'un se pose la question du choix d'un langage, il tombera sur plusieurs discussions comme celle-ci, où la conclusion est "moi je préfère ça".

    Que ça te plaise ou non, il faut se poser la question de la pertinence d'une comparaison.
    Pour poser des questions ou simplement discuter informatique, vous pouvez rejoindre le discord NaN.

  9. #29
    Membre éprouvé
    Citation Envoyé par mintho carmo Voir le message
    Je demande le vote du public, mais je ne connais pas beaucoup de devs C++ qui parlerait de "liste" pour parlait de std::vector.
    Et je parlais aussi de consomation mémoire, qui est très différente entre std::vector et std::list.
    tu te rends compte que quand on parle au niveau conceptuel, on dit juste une liste?
    une List en Java est une abstraction, ArrayList est une implementation.
    faut surement parler differemment aux developpeurs C++?
    Ou alors tu fais partie de ces developpeurs à qui faut tout expliquer dans le details?
    je n'ai pas mis de code, je voulais vraiment donner une opinion, un retour d'experience, pas rentrer dans les details d'implementation.

    Java prendra toujours (beaucoup) plus de memoire que c++, c'est un fait, et il faut clairement le savoir quand on prend une decision. J'ai meme été étonné d'une telle différence c'est pour cette raison que je l'ai souligné. Essaie sur un example mais avec un grand nombre et regarde puis dis nous.

    Citation Envoyé par mintho carmo Voir le message
    Partager des "analyses" personnelles de comparaison de quelques tests, je l'ai déjà fait. Sur des questions techniques, en donnant toutes les informations qui permettent de comprendre correctement ce qui est fait, pourquoi et ce que j'en conclue. Pour avoir des analyses différentes, avoir une vision plus large des problématiques.

    Mais le type de comparaison que tu fais dépend beaucoup des compétences du dev, de son expérience sur les langages et les frameworks, le type d'application, etc. C'est totalement subjectif et à part dire "moi je préfère ça", c'est impossible à transposer à une autre personne. Dit autrement, si quelqu'un se pose la question du choix d'un langage, il tombera sur plusieurs discussions comme celle-ci, où la conclusion est "moi je préfère ça".

    Que ça te plaise ou non, il faut se poser la question de la pertinence d'une comparaison.
    oui c'est vrai que c'est une partie subjective, ce que je trouve élégant dans une coroutine est personnel, j'imagine que d'autre vont preferer l'objective C++ avec grand central dispatch, je ne sais pas, et d'autre Qt et Qt concurrent. on peut tout imaginer et tout discrediter.

    et puis un choix depend des contraintes du depart, mais faut-il vraiment faire un preambule de 50 pages avant de donner un retour d'experience? et de toute facon, y aura tout le temps quelqu'un pour dire que c'est nul, la preuve.

    comme retour, j'aurais plutot preferé : "moi j'ai observé que etc etc" ou alors "Comment as tu fait la tache asynchrone en Qt car j'ai une bonne facon de faire qui est celle ci et que je trouve elegante" etc.

    J'imagine que c'est chacun son truc. Cette discussion est stérile, je ne la continuerais pas, et comme tu as dis "je demande l'avis du public".

  10. #30
    Responsable 2D/3D/Jeux

    Moi, perso, j'ai aimé le retour d'expérience que j'ai trouvé intéressant. Je comprends qu'il y ait des blocages sur l'utilisation de Qt avec le QML, car c'est une chose qui s'apprend, plus ou moins facilement. Dans d'autres langages, il n'a pas ce genre de "communication" entre deux langages/paradigmes. Mais pour autant, le QML n'est pas mauvais.

    Pour la consommation mémoire en JAVA, j'avais déjà rencontré ce problème, mais n'étant pas expert en JAVA, je ne sais pas régler une telle chose. Juste, ça m’horripile une telle chose, venant d'un monde C++.

    Par contre, pour l'intersection de cinq milliards d'éléments, la consommation mémoire énoncée pour le C++ me parait basse, non ? (sauf si les 5 milliards d'éléments ne sont pas en mémoire, évidemment.)
    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.

  11. #31
    Membre éprouvé
    Citation Envoyé par LittleWhite Voir le message
    Moi, perso, j'ai aimé le retour d'expérience que j'ai trouvé intéressant. Je comprends qu'il y ait des blocages sur l'utilisation de Qt avec le QML, car c'est une chose qui s'apprend, plus ou moins facilement. Dans d'autres langages, il n'a pas ce genre de "communication" entre deux langages/paradigmes. Mais pour autant, le QML n'est pas mauvais.
    Merci pour cette note positive! QML est plutot cool mais il faut faire plus de chose que en javafx ou cocoa. De toute facon il n'existe pas d'alternative pour du cross plateforme en C++ que Qt.

    Citation Envoyé par LittleWhite Voir le message
    Pour la consommation mémoire en JAVA, j'avais déjà rencontré ce problème, mais n'étant pas expert en JAVA, je ne sais pas régler une telle chose. Juste, ça m’horripile une telle chose, venant d'un monde C++.

    Par contre, pour l'intersection de cinq milliards d'éléments, le consommation mémoire énoncée pour le C++ me parait bas, non ? (sauf si les 5 milliards d'éléments ne sont pas en mémoire, évidemment.)
    tu as raison c'est bizarre, il faut que je verifie quel nombre exactement j'ai utilisé mais je suis sûr du ratio entre java et C++. je verifie des que possible et j'editerai mon message.

    Edit: oui c'est 50 millions d'elements, effectivement tu avais raison :-)