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

C++ Discussion :

Optimisation - Traitement de messages et GUI


Sujet :

C++

  1. #1
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut Optimisation - Traitement de messages et GUI
    Bonjour,

    Je developpe actuellement un petit projet d'interface graphique.

    Le developpement se fait sous windows, mais l'architecture doit etre independante du systeme d'exploitation. C'est surtout histoire de bien maitriser les differents principes (gestion de message, interactions....)

    Tout fonctionne à merveille (ou presque) :
    - on peut declarer des conteneurs de composants (cConteneur)
    - on peut declarer des composants (cComposant => cBouton, cLabel...)
    - on peut ajouter des composants à un conteneur, et afficher ce dernier, traiter les interactions, etc....

    En gros, ca ressemble à un truc du genre MFC windows ou SWING Java, mais en plus simple...

    Maintenant, je souhaiterais optimiser un peu le bousin, lors des actions de l'utilisateur :

    Actuellement, lors d'un clic (par exemple) le conteneur de base compare les coordonnées du clic avec les "surfaces" de chacun de ses composants pour determiner sur lequel on a cliqué.

    Du coup : ca fait beaucoup de comparaisons (surtout si il y a bcp de composants)

    Je cherche à ameliorer cela, pour traiter rapidement des messages du type "onMouseOver" : faire toutes les comparaisons à chaque mouvement de la souris pour savoir audessus de quel composant le curseur est placé me parait excessif...

    Merci de votre aide !

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Je ne pense pas qu'il y ait de problème de performances ici. Les mouvements de la souris génèrent typiquement 50 évènements à la seconde. Sur un processeur moderne, cela correspond à 50 millions d'instructions, de quoi gérer plusieurs milliers de composants en consommant moins d'1% du temps processeur !

  3. #3
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    tu cherches a gagner de la performance ou de lisibilité dans ton code ? je ne connais pas ton implementation.

  4. #4
    Membre émérite
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Points : 2 747
    Points
    2 747
    Par défaut
    le meilleur moyen d'optimiser le OnMouseOver est de "retenir" le dernier objet sur lequel la souris se situe. Le mouvement d'une souris est continu (le pointeur ne peut pas passer de x à x+2 sans passer par x+1) donc il faut créer une liste de composant prioritaire pour chacun de tes tests.

    Commencer par celui ou il était en dernier.

    Si ce n'est plus le meme, rechercher "intelligement" à partir des limitrophes. Par exemple, si la souris à la limite d'une bordure haute, il y a de forte chance que la souris passe sur le composant au dessus

    Avec ce systeme, tu testes au maximum 3 composants et non l'ensemble des composants

  5. #5
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut
    Merci pour les reponses !

    Je cherche à optimiser la vitesse, non la lisibilité (c'est deja bien lisible, vu le peu de code necessaire...).

    Effectivement, vu les 50 millions d'instructions gérées entre 2 mouvements de souris, l'optimisation n'est pas tres utile...

    Peut-etre une optimisation sur la facon de determiner si un point est dans un rectangle ?

    Pour l'instant, je fais 4 comparaisons, une sur chaque bordure.

    Si il y a mieux, tant mieux !

    Je cherche à optimiser car c'est pour une application "temps réel" (enfin presque) : le temps entre un clic et son traitement doit etre minimum...

Discussions similaires

  1. Requette Trop longue. Comment optimiser ?[Traitement]
    Par Tankian dans le forum Requêtes
    Réponses: 1
    Dernier message: 22/06/2006, 20h37
  2. Optimiser traitement fichier [.txt]
    Par Metallic-84s dans le forum Langage
    Réponses: 14
    Dernier message: 16/03/2006, 13h33
  3. Fonction de traitements des messages VC\C++
    Par Pe04 dans le forum MFC
    Réponses: 6
    Dernier message: 23/02/2006, 15h19
  4. [PL/SQL] Optimisation traitement
    Par nako dans le forum Oracle
    Réponses: 1
    Dernier message: 29/12/2005, 16h01
  5. Optimisation Traitement ADO
    Par adjava dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 19/04/2005, 14h48

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