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] utilisation d'un StringBuilder


Sujet :

C#

  1. #1
    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 [Optimisation] utilisation d'un StringBuilder
    Hello,

    une classe CCustomString utilise un membre de type Stringbuilder
    et possède un accesseur (R+W) de type string :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public StringBuilder Value;
    public string StringValue
    {
        set { new StringBuilder(value); }
        get { return Value.ToString(); }
    }
    Le problème c'est que j'aimerais modifier, dans un but d'optimisation, le code en exemple ci dessous afin d'eviter une re-instanciation du membre Value !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void StringUnescape(CCustomString _Str)
    {                        
        _Str.StringValue = Regex.Unescape(_Str.StringValue);
    }
    J'aurais aimé faire une truc dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void StringUnescape(CCustomString _Str)
    {        
        _Str.Value.Clear();                
        _Str.Value.Append(Regex.Unescape(_Str.StringValue));
    }
    Simplement je sais pas comment faire ca au mieux... des idées?
    merci d avance
    Pour les details, cherche tout seul !

  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Points : 706
    Points
    706
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public StringBuilder Value;
    public string StringValue
    {
        set { new StringBuilder(value); }
        get { return Value.ToString(); }
    }
    Je comprends pas tellement la logique du code. Pourquoi des accesseurs si le champ est public ?

    Ensuite pourquoi utiliser un stringBuilder si il se comportera de la même manière qu'une string (à part pour l'instanciation) ?

  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
    Citation Envoyé par harz62 Voir le message
    Bonjour,
    Je comprends pas tellement la logique du code. Pourquoi des accesseurs si le champ est public ?
    C'est vrai qu'on ne comprend pas le pourquoi sous cet aspect epuré !!!
    Pour faire simple, on utilise StringValue pour les opérations simples et le StringBuilder lors d'opération plus gourmande en temps. --> D'ou la possibilité d'acceder les deux en public.

    Citation Envoyé par harz62 Voir le message
    Ensuite pourquoi utiliser un stringBuilder si il se comportera de la même manière qu'une string (à part pour l'instanciation) ?
    C'est justement lors d'instanciation (mais aussi de lors Concatenation (ou Append)) que le StingBuilder se montre plus performant !

    Mais là n'est pas la question ! Independemment de l'aspect farfelu, la question est bien fondée.
    Pour les details, cherche tout seul !

  4. #4
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Pour éviter une réinstanciation, tu peux faire quelque chose du style :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    set
    {
        this.Value.Length = 0;
        this.Value.Append(value);
    }

  5. #5
    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
    Grand merci Skalp,

    je sais pas pourquoi; j'était sur que c'était un simple getter...
    Pour les details, cherche tout seul !

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

Discussions similaires

  1. Optimisation : utilisation d'un tab ou d'un arrayList ou autre?
    Par gwal21 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 20/04/2011, 11h26
  2. Optimisation : utilisation abusive de if
    Par Sorgue dans le forum MATLAB
    Réponses: 1
    Dernier message: 08/05/2010, 20h34
  3. [Optimisation] Utilisation de l'index avec une date
    Par Batou69 dans le forum Développement
    Réponses: 13
    Dernier message: 23/10/2009, 08h47
  4. [Débat] Optimisation, utilisation de sgbd ?
    Par Targan dans le forum Optimisations
    Réponses: 4
    Dernier message: 14/02/2008, 14h33
  5. Réponses: 10
    Dernier message: 02/11/2007, 14h36

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