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

Développement Windows Discussion :

Quelle est la bonne pratique pour accéder optimalement à un membre d'un array?


Sujet :

Développement Windows

  1. #1
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 104
    Points : 69
    Points
    69
    Par défaut Quelle est la bonne pratique pour accéder optimalement à un membre d'un array?
    Salut à tous,

    Question plutôt théorique que je viens poser ici car d'autres doivent se la poser et si j'ai tort, ça m'épargnera pas mal d'efforts.

    Cas concret: par exemple, admettons que j'itère sur les membres d'une liste de string >
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    'je déclare ma liste
    Dim myListOfString as new List (Of String)
     
    'je la remplis
    myListOfString.AddRange (text.Split(separators1, StringSplitOptions.RemoveEmptyEntries))
     
    'Maintenant, je souhaite itérer dessus, mais à partir du numéro d'index pour pouvoir accéder au items précédents et suivants
    For i As Integer = 0 to myListOfString.Count -1
     
        'la façon la plus logique d'accéder à à l'item courant de ma liste me semble la suivante:
        If myListOfString(i) = "Blablabla" Then
        End If
     
    Next

    Sur un grand nombre d'itérations, lorsque je me réfère à l'item courant comme myListOfString(i) au sein de la boucle, je vais chercher la valeur dans la list.ToArray. Si je dois accéder à cet item de nombreuses fois, je suppose qu'à chaque appel la valeur doit être allée cherchée dans la list.ToArray.
    La question: est-ce qu'il vaut mieux, pour gagner en performances, stocker l'objet courant dans une string locale (sous réserve de le mettre à jour à la fin de l'itération)?

    Exemple:
    Code VB : 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
     
    'je déclare ma liste
    Dim myListOfString as new List (Of String)
     
    'je la remplis
    myListOfString.AddRange (text.Split(separators1, StringSplitOptions.RemoveEmptyEntries))
     
    'Maintenant, je souhaite itérer dessus, mais à partir du numéro d'index pour pouvoir accéder au items précédents et suivants
    For i As Integer = 0 to myListOfString.Count -1
     
        'La string locale de stockage temporaire
        Dim currentString as String =myListOfString(i)
     
        'Est-ce plus rapide de s'y prendre comme ça si je prévis de le faire plusieurs fois dans la boucle
        If currentString  = "Blablabla" Then
        End If
     
        ' reste de la boucle
     
        'et enfin, je mets à jour l'objet courant
         myListOfString(i) = currentString  
    Next

    Merci!

  2. #2
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Bonjour.

    Oui, il est plus efficace de stocker dans une variable locale. Au passage si tu peux travailler directement depuis le tableau renvoyé par text.Split tu gagneras également en performances.

  3. #3
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 104
    Points : 69
    Points
    69
    Par défaut
    Citation Envoyé par DonQuiche Voir le message
    Au passage si tu peux travailler directement depuis le tableau renvoyé par text.Split tu gagneras également en performances.
    Bonjour,

    Merci pour ta réponse. Tu veux dire que je gagnerai si je stocke mon split comme ça:
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    'je déclare et remplis un array of string
    Dim myStrings() as string = text.Split(separators1, StringSplitOptions.RemoveEmptyEntries)

    Mais comment j'y accède idéalement, via une variable locale ou directement via myStrings(i) si j'itère sur un array?

  4. #4
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Citation Envoyé par billybobbonnet Voir le message
    Bonjour,

    Merci pour ta réponse. Tu veux dire que je gagnerai si je stocke mon split comme ça:
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    'je déclare et remplis un array of string
    Dim myStrings() as string = text.Split(separators1, StringSplitOptions.RemoveEmptyEntries)

    Mais comment j'y accède idéalement, via une variable locale ou directement via myStrings(i) si j'itère sur un array?
    C'est bien ça. Et, oui, il est toujours plus intéressant d'y accéder via une variable locale.

  5. #5
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 104
    Points : 69
    Points
    69
    Par défaut
    Merci bien Je passe le sujet en résolu

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/04/2011, 10h55
  2. Quelle est la bonne pratique
    Par sam01 dans le forum Langage
    Réponses: 3
    Dernier message: 16/04/2010, 15h13
  3. Réponses: 33
    Dernier message: 18/04/2009, 12h36
  4. Réponses: 7
    Dernier message: 23/03/2009, 22h38
  5. Réponses: 2
    Dernier message: 14/03/2008, 09h57

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