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

 .NET Discussion :

StringBuilder vs String.Concat


Sujet :

.NET

  1. #1
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 681
    Points
    681
    Par défaut StringBuilder vs String.Concat
    Bonjour,

    je sais que StringBuilder est plus performant que Line = truc + bidule + "fkdsfs" pour créer une chaine de caractère.
    mais est-ce que String.Concat est aussi performant ?

    J'ai trouvé ce site qui en parle http://kaioa.com/node/59 mais j'ai pas tout compris

    Merci

  2. #2
    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
    Ben, cet article (qui parle de code Java) dit que String.Concat est beaucoup moins performant que StringBuilder pour de nombreux ajouts de chaînes.
    Ce dessin résume bien la performance : http://kaioa.com/b/0803/cat_compare.svgz

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 159
    Points : 486
    Points
    486
    Par défaut
    J'ai toujours entendu que le StringBuilder était plus performant à partir d'un certain nombre (une 10aine) de chaines, mais c'est vrai que j'ai jamais cherché plus loin et j'ai aucune source fiable en parlant...

  4. #4
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 681
    Points
    681
    Par défaut
    Ok, merci

    En même temps si j'avais regardé sur MSDN, j'aurais eu ma réponse

    Voilà ce qu'ils disent :
    Considérations sur les performances

    Les méthodes Concat et AppendFormat concatènent toutes deux les nouvelles données en un objet String ou StringBuilder existant. Une concaténation d'objet String crée toujours un nouvel objet à partir de la chaîne existante et des nouvelles données. Un objet StringBuilder gère une mémoire tampon qui contient la concaténation des nouvelles données. Les nouvelles données sont ajoutées à la fin de la mémoire tampon, si l'espace nécessaire est disponible ; sinon, une nouvelle mémoire tampon, plus grande, est allouée, les données de la mémoire tampon d'origine sont copiées dans la nouvelle mémoire tampon, et les nouvelles données sont ajoutées à la nouvelle mémoire tampon.

    La performance d'une opération de concaténation pour un objet String ou StringBuilder dépend de la fréquence à laquelle une allocation de mémoire a lieu. Une opération de concaténation String alloue toujours la mémoire, alors qu'une opération de concaténation StringBuilder alloue seulement la mémoire si la mémoire tampon de l'objet StringBuilder est trop petite pour contenir les nouvelles données. Par conséquent, la classe String est préférable pour une opération de concaténation si un nombre fixe d'objets String est concaténé. Dans ce cas, les opérations de concaténation individuelles peuvent même être combinées en une seule opération par le compilateur. Un objet StringBuilder est préférable pour une opération de concaténation si un nombre arbitraire de chaînes est concaténé; par exemple, si une boucle concatène un nombre aléatoire de chaînes d'entrées d'utilisateur.

  5. #5
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 159
    Points : 486
    Points
    486
    Par défaut
    merci, interressant à connaitre.

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

Discussions similaires

  1. [XL-2010] Tableau to String concat
    Par pataw dans le forum Excel
    Réponses: 5
    Dernier message: 19/07/2013, 12h04
  2. Réponses: 20
    Dernier message: 11/07/2006, 17h43
  3. [String]Explication de: a.concat(b.concat(c))
    Par fluec-wa dans le forum Langage
    Réponses: 9
    Dernier message: 23/11/2005, 17h18
  4. [MFC] concat une textbox et une string
    Par zedine dans le forum MFC
    Réponses: 4
    Dernier message: 28/08/2005, 20h26
  5. [VB.NET] StringBuilder Vs String.Format
    Par maitrebn dans le forum Windows Forms
    Réponses: 6
    Dernier message: 19/10/2004, 18h58

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