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

Langage PHP Discussion :

[POO] Concaténation de String, lequel est le plus "rapide" ?


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut [POO] Concaténation de String, lequel est le plus "rapide" ?
    Bonjour à tous,

    Partant du principe que dans une boucle concaténer des pseudo-String (PHP oblige) avec la bonne vieille methode du "." n'était pas l'idéal ni le plus optimisé, je me suis lancé dans la rédaction d'un objet StringBuilder a la manière de Java.

    Malgré tout je manque d'infos pour savoir quel serait la méthode la plus rapide afin de concaténer des strings (Il faut rester dans l'objectif qu'il peut y avoir vraiment beaucoup de string a concaténer)

    En commencant à coder je suis tomber sur plusieurs solutions:
    -Soit je stocke chaque string dans un tableau (je bénéficie donc de l'indexation du tableau), pour tout rassembler a la fin. (Cela peut poser des soucis d'optimisation de certaine methode tel que l'ajout d'un char pour une position dans la chaine globale, mais c'est une autre histoire)
    -Soit dans ma fonction de concaténation je fais comme suit: $string .= $appendstring (Qui doit etre plus optimisé que: $string = $string . $appendstring)
    Mais du coup je me dit que faire une classe pour ca n'est pas forcément utile, sauf pour des question de pratique pour réutilisé l'objet plus tard.
    -Soit j'utilise la methode str_pad, qui peut me donné des erreurs dans le cas du comptage de la longueur du string (avec les caractère spéciaux notamment)
    -Soit il existe deja un buffer et je suis passé a coté
    -Soit je laisse tombé

    Enfin bref, vous avez compris globalement je pense. C'est quoi qui serait le mieux pour concaténer des strings?

  2. #2
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    J'ai toujours concatener avec le .= ou le . ...
    Au pire,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $chaine = sprintf('%s%s', $chaine1, $chaine2);
    Mais jsuis pas certain de l'interet...

  3. #3
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    de mon coté j'ai du mal à croire que
    soit plus rapide que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $string = $string . $suite;
    A mon avis c'est optimisé par l'interpréteur PHP ou dans le code natif généré derrière.

  4. #4
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par koopajah
    de mon coté j'ai du mal à croire que
    soit plus rapide que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $string = $string . $suite;
    A mon avis c'est optimisé par l'interpréteur PHP ou dans le code natif généré derrière.
    Si seulement !
    Le problème (et l'avantage ^^) avec le PHP c'est que c'est un langage "poubelle " (rien de péjoratif) pas typé qui a été créé pour une multitude de dev. Du coup y'a plusieurs manière de faire une seule chose, et cela n'est pas tout a fais gérer de la même manière derrière.
    Bon je vais pas m'éterniser non plus sur les différents bench fait par différentes personnes (par exemple celui-ci : http://www.vulgarisation-informatiqu...imiser-php.php) mais on remarque bien que selon la manière d'agencer le code il y aura des gains de performances ou de clarté.

    Bon pour être plus précis en fait je vais avoir quelque chose du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    boucle for ou autre {
            $string = $var1 . $var2 . $var3 . 'machin bide';
            //condition
                    $string .= $var;
           //fin condition
           $string = 'yeaaaahou' . $var366665;
           //condition
                    $string = substr_replace($string, $wvar, '', $length);
           ...
    } //fin boucle
    Mon string est créé mais je ne vais pas l'utiliser maintenant (Pas d'echo ou de print si vous préféré ^^), mais peux vite devenir assez long a excecuter. Donc je me suis demandé si des gens ne s'étaient pas amuser a faire une classe "buffer" pour optimisé tous ca (Comme en Java, C# ou autre langage POO un peu typés on a les Objet StringBuffer ou StringBuilder).

    J'ai trouver quelques trucs mais cela ne me convenait pas trop ^^.
    Mais bon c'est pas grave, j'ai pris un choix selon mes besoins. Certainement pas le plus optimisé mais le mieux pour le projet sur lequel je suis (Ce qui m'embête c'est que j'ai bien envie de réutilisé la classe pour mes autres projet ).

    J'ai décidé de stocké chaque string dans un tableau et de les concaténer juste a la fin (quand j'en aurait besoin en clair). Grace a cela, et en fonction des condition du code je pourrais naviguer simplement pour supprimer les string souhaité ou en ajouter d'autre au endroit voulu.

    Je vous montrerais la classe dès qu'elle sera terminé si ca vous intéresse.

    Merci à vous d'avoir participé en tous cas.
    a+

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

Discussions similaires

  1. [XML] Lequel est le plus correct ?
    Par Sensei.f dans le forum XML/XSL et SOAP
    Réponses: 17
    Dernier message: 24/10/2006, 15h27
  2. Apache 1.3 et 2 , lequel est le plus rapide ?
    Par a028762 dans le forum Apache
    Réponses: 3
    Dernier message: 15/05/2006, 11h33
  3. [StringGrid - DrawGrid] Lequel est le plus performant ?
    Par xenos dans le forum Composants VCL
    Réponses: 3
    Dernier message: 01/01/2006, 18h09
  4. [Optimisation] Lequel est le plus rapide ?
    Par TOTO32 dans le forum Langage
    Réponses: 10
    Dernier message: 14/08/2005, 23h19

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