Journal : Benchs QT VS Cairo
Posté par Morreale Jean Roc () le 23 octobre 2006
Zack Rusin, développeur de chez Trolltech et dev kde, vient de publier quelques comparatifs de performances vectorielles entre QT 4.3svn et Cairo 1.2.5. Le constat :
- QT est 5 à 6 fois rapide que Cairo en passant par Xrender
- QT avec le backend OpenGL est plus de 6 plus rapide qu'avec Xrender
- QT avec xrender est plus rapide que Cairo utilisant Glitz (opengl)
- QT opengl est un gazillion de fois plus rapide que Cairo xrender/glitz
Pour admirer les graphiques en couleur c'est par là :
-> http://zrusin.blogspot.com/2006/10/benchmarks.html
Lien à sortir la prochaine fois que vous voyez un "pourquoi trolltech n'utilise pas Cairo ? c'est de la duplication inutile d'effort !"
- QT est 5 à 6 fois rapide que Cairo en passant par Xrender
- QT avec le backend OpenGL est plus de 6 plus rapide qu'avec Xrender
- QT avec xrender est plus rapide que Cairo utilisant Glitz (opengl)
- QT opengl est un gazillion de fois plus rapide que Cairo xrender/glitz
Pour admirer les graphiques en couleur c'est par là :
-> http://zrusin.blogspot.com/2006/10/benchmarks.html
Lien à sortir la prochaine fois que vous voyez un "pourquoi trolltech n'utilise pas Cairo ? c'est de la duplication inutile d'effort !"
> Lire le journal (78 commentaires, moyenne: 4,3).
Vous avez demandé le commentaire #767566.



Ça fait peur...
... j'ai vu cette entrée de blog et je me suis dit : c'est pas possible!
Il doit quand même y avoir une énormité quelque part, parce qu'une différence pareille ça semble quand même aberrant.
J'attends de voir la réponse des développeurs cairo (des développeurs, pas des fanas... je veux des explications techniques, pas des râles de bêtes!).
[^]Re: Ça fait peur...
Oui, ben en même temps... "Zack Rusin, développeur de chez Trolltech"... Tu t'attendais à quoi ;-) ?
Pan ! Pan !
Ne pas utiliser : traplinuxfrnico@univ-nantes.Fr
[^]Re: Ça fait peur...
Le second fil de commentaires, un peu plus haut, commence par un message de tipote qui explique justement où se situe la différence, selon Zack. Ah tiens, c'est même expliqué dans son billet, dont le lien est présent dans le journal, mais c'est en anglais, je le reconnais.
[^]Re: Ça fait peur...
Il n'affirme pas que c'est l'explication, mais seulement que c'est une piste. Nuance. Ma question tient toujours : comment est-ce possible !?
[^]Re: Ça fait peur...
Je crois que tu te réponds à toi même. Si les mecs qui sont des bêtes dans ce domaine ne peuvent au plus que te donner des pistes de recherche, je vois pas qui va répondre parfaitement à ta question.
[^]Re: Ça fait peur...
L'impression que j'avais, c'est qu'il ne connaît pas le code de cairo en détail. Il croit savoir que leur tesselator n'est pas d'une complexité logarithmique et avance que c'est une piste d'explication.
Il y a peut-être quelqu'un sur linuxfr qui connaît bien le code de cairo (ou traîne souvent sur #cairo *g*), et qui sait qu'il y a certains endroits dans le code pas optimisés du tout, sur lesquels un peu de travail va tout de suite faire gagner beaucoup au niveau performances.
Bref, j'insiste : ma question n'est pas si bête :-)
[^]Re: Ça fait peur...
Bon, t'as du bol, j'ai pris un moment pour retrouver tout ça à partir de la mailing list "performance-list": http://lists.freedesktop.org/archives/cairo/2006-September/0(...)
http://mail.gnome.org/archives/performance-list/2006-October(...)
De rien :-)
[^]Re: Ça fait peur...
Ces liens sont très très intéressants, c'est ce que je demandais! Merci beaucoup!
[^]Re: Ça fait peur...
Déjà, une question... Quand tu regardes/imagines une interface graphique, tu vois beaucoup d'endroit où tu dessines un polygone à 100.000 sommets (je sais plus le nb exact que zrusin a utilisé dans son bench) ? Ou tu vois plus des polygones avec une dizaine de sommets (par ex, un bouton c'est un rectangle) + de la transparence et des effets du genre ? Moi j'imagine plutôt le 2nd cas, ce qui rend le bench très artificiel, du moins pour ce qui est fait actuellement avec ces technos de rendu. Mais c'est pas inintéressant quand même ;)
[^]Re: Ça fait peur...
Ah ben non, ton bouton il a des coins arrondis, il faut "tesselater".
Et dans une appli KDE, il y a plein de boutons partout :)
Et puis tes fenêtres molles qui se déforment, il faut les "tesselater" aussi.
Un autre très gros mangeur de polygones, c'est le texte.
Alors évidemment, zrusin a exagéré. Mais maintenant, il sait que son algo est correct, et qu'il ne risque pas de devoir repasser dessus dans un an parce que les perfs sont à la ramasse.
[^]Re: Ça fait peur...
A priori, le coin arrondi, tu le tesselate pas, tu dis à Xrender/opengl de te dessiner un arc de cercle (je suis carrément pas sûr de ce que je dis, j'ai jamais creusé la question, mais je le ressens comme ça).
Et ta fenêtre qui se déforme, tu ne la gère pas du tout avec cairo ou le truc de dessin vectoriel de QT... C'est un bête objet opengl que tu déformes à coup de shaders ou de dieu sait quoi (cairo/qt fait le rendu dans un pixmap en mémoire *non déformé*, et ensuite le serveur X balance ce pixmap représentant la fenêtre complète non déformée à la carte graphique sous forme d'objet opengl, puis fait explique à la CG qu'elle doit déformer cet objet).
[^]Re: Ça fait peur...
Un autre très gros mangeur de polygones, c'est le texte
Oui, mais d'une part, il me semble que les glyphes sont mis en cache, donc rendu une seule fois, et d'autre part, ce n'est pas cairo qui effectue le rendu...
priori, le coin arrondi, tu le tesselate pas
Si tu passe par un appel à cairo, si, tu dois le tesselater. Après, rien ne t'oblige à passer par cairo pour dessiner un rectangle avec des coins arrondis...
Sinon, pour cette histoire de benchmark, si le résultat m'a un peu déçu (parce que le benchmark teste un point qui est assez important pour l'utilisation qu'on en fait dans le moteur de tracé de courbe de gnumeric basé sur cairo), je me dis que finalement, c'est plutôt une bonne nouvelle, car potentiellement il y a des cas où cairo peut devenir 40 fois plus rapide, et que je suis convaincu que les développeurs pourront placer cairo au même niveau qu'arthur...
[^]Re: Ça fait peur...
Quand je regarde l'interface graphique de mon logiciel favori du moment, je vois plein de polygones avec tout plein de sommets : j'utilise Inkscape.
Et vu la lenteur du logiciel, je suis super intéressé par un éventuel passage à Cairo si ce dernier est bien optimisé et est bien accéléré par ma carte graphique.