Qt : l’influence du compilateur sur les performances

L’instanciation

Ce test consiste à mesurer la durée de l’instanciation de 400 000 chaînes de caractères d’une longueur de 1 001 octets.

Remarques : le test utilise environ 850 Mo de RAM, nous ne faisons aucun effort particulier pour maîtriser l’allocation de mémoire ni le swap. L’allocation est faite dynamiquement avec l’opérateur new. Les résultats s’éloignant trop de la valeur médiane ont été ignorés.

Après la création, les pointeurs sur les chaines sont insérées dans une QList, cette durée n’est pas déduite du temps total. Cependant il est négligeable.

La destruction d’objets

Ce test consiste à mesure la durée de la destruction des 400 000 chaînes de caractères instanciées précédemment.

Remarques : Les objets sont récupérés depuis une QList avant d’être détruits avec l’opérateur delete. La durée de récupération du pointeur n’est pas déduite du temps total, cependant elle est négligeable.

La copie (profonde) d’objets

Ce test consiste à copier 1 000 000 de fois un tableau d’octets d’une taille de 1 000 000 octets.

Le calcul mathématique

Ce test consiste à effectuer plusieurs opérations mathématiques (nombre aléatoire, racine carrée, multiplication, division) sur des nombres entiers (int), double précision (double) et flottants (float).

Les graphismes

Ce test consiste à afficher des formes 2D sans accélération matérielle et à les déplacer dans une fenêtre de manière aléatoire. Je m’attends principalement à observer des différences entre versions de Qt.

Les appels de fonction

Ce test consiste à effectuer 1 000 000 d’appels de fonctions par branchement (sans la run-loop) en passant des paramètres par valeur, ce qui engendrera des copies de données. Je n’utilise pas les classes de Qt Core volontairement pour forcer la copie profonde et éviter le copy-on-write. J’ai donc créé une classe objet qui n’hérite pas de QObject et qui contient un constructeur de copie et un opérateur d’affectation.

La run-loop

Ce test consiste à effectuer 1 000 000 d’appels à la run-loop en utilisant des signaux et des slots contenant des paramètres. Ces paramètre utilisent exclusivement des classes de Qt optimisées utilisant le copy-on-write.

Les threads

Ce test consiste à exécuter un long calcul de fractales de Mandelbrot sur 50 threads.

Remarques : La gestion des threads sous Windows utilise Win32 avec MSVC et pthreads avec minGW. Sous macOS elle utilise pthreads uniquement.

Partagez cet article !

Abonnez-vous à notre newsletter !

Si vous souhaitez être notifié lorsqu'un nouvel article est publié, abonnez-vous à notre newsletter et vous recevrez un email dès qu'un article sera publié.

Pages : 1 2 3 4

Articles similaires

Qt : distribuer ses appli... La distribution d’une application est une étape importante de la vie d’une application, elle nécessite d’être pensée très tôt dans la conception. Cette série d’articles présente les
Adopter les flux tirés d... Nous abordons un des points essentiels de l’architecture réseau et applicative efficace et économe : les flux tirés. Partagez cet article ! Abonnez-vous à notre newsletter !
Qt : comment implanter un... Le contrôleur Le contrôleur sert d’interface entre l’application et le worker, il orchestre le démarrage du thread, son arrêt, l’instanciation et la destruction du worker ainsi que
Qt : Traiter une liste de... Pour qu’une interface graphique reste fluide aux yeux de l’utilisateur, le thread qui la gère ne doit jamais être interrompu plus d’une poignée de millisecondes. Or le
Apprendre à développer ... Une de mes activités est la formation professionnelle à la conception et à la programmation d’applications avec Qt. J’envisage aujourd’hui de créer un MOOC payant pour partager
Qt : pourquoi et quand ut... Pourquoi créer des threads ? Dans ma carrière j’ai souvent vu la même erreur répétée : une application dotée d’une interface graphique a des problèmes de fluidité
Livre Maîtrisez Qt 5 ... La seconde édition du livre de Tristan Israël, Maîtrisez Qt 5 – Développement d’applications professionnelles, est parue. Vous pouvez le découvrir sur le site des éditions ENI.
Utiliser la technique du ... Le lazy-loading, ou chargement paresseux en français, est une réponse simple à la question simple “pourquoi charger plus de données que nous ne pouvons en afficher ?”.
Qt : l’influence du... L’instanciation Ce test consiste à mesurer la durée de l’instanciation de 400 000 chaînes de caractères d’une longueur de 1 001 octets. Remarques : le test utilise

Laisser une réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *