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

VB.NET Discussion :

Optimisation au niveau de la recherche de contrôles [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2022
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Décembre 2022
    Messages : 76
    Par défaut Optimisation au niveau de la recherche de contrôles
    Bonjour à tous,

    J'essaie d'optimiser une application dans laquelle je fais beaucoup d'appels à Controls("BlaBla" & i.TopString) afin de retrouver le bon control en fonction de son nom.
    Avec parfois par dessus des DirectCast pour convertir le control obtenu dans le bon type d'objet et pouvoir atteindre les propriétés recherchées.

    Je me pose une question : si je passe par un dictionnaire, qui lie mes objets et un index, et que je retrouve mes objets directement par l'index au lieu d'un controls... + Directcast, gagne-t-on du temps processeur ?

    Merci de vos réponses.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 578
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 578
    Par défaut
    Controls étant déjà une collection, je ne suis pas sûr que tu puisses gagner, il faudra je pense que tu fasses toujours un directcast sur le contenu de ton dictionnaire

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Par défaut
    Bonjour, qu'essayez-vous d'optimiser exactement ? La performance ou la commodité au niveau programmation ? Constatez-vous des problèmes de lenteur ou autre ?
    N'hésitez pas à poster votre code.
    Je ne sais pas ce que vous voulez dire par: "afin de retrouver le bon control en fonction de son nom.". Si vous connaissez déjà le nom, vous pouvez adresser le contrôle directement. Il suffit juste de récupérer une référence à l'objet et puis Directcast pour en extraire les propriétés.

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    3 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 001
    Par défaut
    Tu ne pourras probablement pas de te passer du DirectCast.
    Donc, il n'y aura pas d'amélioration de ce coté là.

    Par contre, je ne suis pas d'accord avec umfred.
    Le dictionnaire est par nature plus performant qu'une simple collection.
    Même si, à moins d'avoir des centaines de contrôles et des boucles à ne plus savoir qu'en faire, ça ne devrait être que très relatif comme amélioration.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2022
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Décembre 2022
    Messages : 76
    Par défaut
    Bonjour à tous,

    Désolé de l'absence mais e fait, j'ai refait tout l'architecture de l'application.
    J'ai pensé autrement.

    J'ai déclaré des tableaux d'Objets que j'incrémente, et j'accède au bon contrôle par le biais de ces tableaux grâce à l'index récupéré en fonction des situations.
    Je verai si c'est plus rapide que de faire un controls puis DirectCast

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Categorie(5) As PictureBox
        Public Fleche(5) As PictureBox
        Public CLBox(5) As CheckedListBox
        Public SSCLBox(5) As CheckedListBox
        Public Affiche() As PictureBox
        Public ListeCheckedItemsDansSSCLBox(5) As CheckedItemCollection
    Autres modifications, j'ai créé des modules, un pour chaque aspect : déclaration globale e variable de l'application, méthodes globales à l'application par thématique.

    J'ai fait également des tests de vitesse entre le type Label et le type PictureBox (au niveau e la création, déplacement et autres...).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    For j = 1 To NbreHorzAffiche Step 1
                    If j > 1 Then
                        X += LAffiche + IntervalIntHorzAffiche
                    End If
     
                    Dim NewObjet As New PictureBox
                    With NewObjet
                        .Visible = False
                        NbreTotalAffichePage += 1
                        .Name = "Affiche" & NbreTotalAffichePage.ToString
                        .BorderStyle = Windows.Forms.BorderStyle.FixedSingle
                        .SizeMode = PictureBoxSizeMode.Normal
                        .Size = New Size(LAffiche, HAffiche)
                        .Location = New Point(X, Y)
                        Me.Controls.Add(NewObjet)
                        'Ajoute l'evenement Click à la PictureBox créée
                        AddHandler .Click, AddressOf AfficheClick
                        'Ajoute l'affiche à la Liste d'affiche
                        ReDim Preserve Affiche(Affiche.Length - 1)
                        Affiche(Affiche.Length - 1) = NewObjet
                    End With
     
                Next
    Sur un nombre assez important d'itérations, les PictureBox sont moins gourmandes.
    Si quelqu'un peut m'expliquer pourquoi ? Je suis curieux.
    Du coup, j'ai mis que des PictureBox à la place des Label.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche de Contrôles
    Par alainGL dans le forum Access
    Réponses: 2
    Dernier message: 23/01/2007, 14h03
  2. [MySQL] optimisation d'une requete de recherche
    Par ozzmax dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 17/11/2006, 20h38
  3. [C#] Comment rechercher un contrôle dans un FormView ?
    Par bleuerouge dans le forum ASP.NET
    Réponses: 4
    Dernier message: 11/09/2006, 16h43
  4. Optimisation d'une requête de recherche
    Par Bobtop dans le forum Requêtes
    Réponses: 16
    Dernier message: 14/06/2006, 16h27
  5. optimisation d'une requete de recherche
    Par moog dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 06/04/2005, 16h58

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