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 :

Meilleure façon d'affecter un tableau ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Août 2012
    Messages : 63
    Par défaut Meilleure façon d'affecter un tableau ?
    Bonjour tout le monde !

    Voilà je me pose une question bête et je ne trouve ma réponse nul part.

    Au niveau des affectations de tableaux, c'est plus rapide un classique ou un associatif ?

    Par exemple, vaut-il mieux ceci...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach ($segments as $value) {
            $data[$i][0] = $i;
            $data[$i++][1] = $value->getSize();
        }
    ... ou ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach ($segments as $value) {
            $data[] = array(0 => $i, 1 => $value->getSize());
        }

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Niveau performance, l'écart entre les deux versions est totalement négligeable.

    Après c'est juste au niveau visuel que ça importe.

    Je n'utiliserai jamais la première version comme tu l'as faites, car elle demande de réfléchir pour bien comprendre ce qu'elle fait. Je l'utiliserai plutôt comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $i = 0; // toujours initialiser la variable, même si ce n'est pas nécessaire
    foreach ($segments as $value) {
            $data[$i][] = $i;
            $data[$i][] = $value->getSize();
            $i++;
        }
    Mais je préfère de toutes façons la deuxième et qui est plus courte et plus compréhensible, même au premier coup d'oeil.

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ta question portant sur "la meilleure" je répond la deuxième qui est plus lisible.

    Après on peut toujours s'amuser a mesurer les temps d’exécution et chez moi la première est plus rapide (0,5s pour 2millions d’itération).
    Mais c'est souvent un mauvais calcul de se focaliser sur les questions d'écriture : au lieu de se demander si telle syntaxe économise un millième de seconde par page, on peut se demander de quelle façon organiser le traitement pour ne pas avoir a faire ces manipulations de tableau par exemple.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Août 2012
    Messages : 63
    Par défaut
    Merci à tous les deux !

    Spartacusply : Oui t'inquiètes j'initialise toujours mes itérateurs ^^ c'est juste une erreur de copier/coller sans doute ;D

    Et sinon quand je voulais dire meilleur je parlais surtout de la rapidité.

    sabotage : Si tu es sûr de toi, je prendrais donc la 1er méthode, même si ça fait un peu plus autiste ^^

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu peux faire la mesure toi même sur ton serveur pour voir.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Août 2012
    Messages : 63
    Par défaut
    Bah en fait rien qu'avec la même méthode, d'un test à un autre, j'ai parfois un jeu de plus de 2 secondes.
    Puis les méthodes hasardeuses wait&see.
    C'était pour savoir si il y avait déjà eu des retours sur ça, ou une normalisation... L'avis de pro quoi... etc...

  7. #7
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par sabotage Voir le message
    chez moi la première est plus rapide (0,5s pour 2millions d’itération).
    C'est un peu hors-sujet, mais tu fais comment ces tests précis, Sabotage, avec quel outil ?
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  8. #8
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Août 2012
    Messages : 63
    Par défaut
    Bon après avoir fais des tests aussi, je confirme Sabotage ^^

    Perso, je me suis servi de la fonction une au début du script, une à la fin, une petite différence et on connaît le temps d'exec du script.

    Merci à vous !

  9. #9
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Merci Gégé, vais aller voir cette fonction.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  10. #10
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par Spartacusply Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $i = 0; // toujours initialiser la variable, même si ce n'est pas nécessaire
    foreach ($segments as $value) {
            $data[$i][] = $i;
            $data[$i][] = $value->getSize();
            $i++;
        }
    est équivalent à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $i = -1;
    foreach ($segments as $value) {
        $data[++$i][] = $i;
        $data[$i][]   = $value->getSize();
    }

  11. #11
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Aaah ok, je partais sur le principe que tu ne changeais pas la ligne d'affectation de $i.

  12. #12
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Par défaut
    la je vois bien les fonctions natives sont rapides...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $sortie = array();
    foreach ($segments as $value) {
        array_push($sortie, $value->getSize());
     }

  13. #13
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par ascito Voir le message
    la je vois bien les fonctions natives sont rapides...
    Tout à fait
    Il faut toujours privilégier une structure du langage aux fonctions. Le rapport en matière de temps d'exécution peut atteindre 1000.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    array_push($data, $value) => $data[] = $value;
    is_null($value)           => ($value === null);
    etc...

Discussions similaires

  1. Liste d'objets, quel est la meilleure façon
    Par shirya dans le forum C++
    Réponses: 2
    Dernier message: 08/12/2005, 16h59
  2. affecter un tableau à un autre
    Par pascaldengis dans le forum C
    Réponses: 2
    Dernier message: 23/11/2005, 17h54
  3. Est ce bien la meilleure façon de faire un histogramme ?
    Par rvzip64 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 10/05/2005, 12h41
  4. problème d'affectation de tableau ...
    Par Mike888 dans le forum C
    Réponses: 23
    Dernier message: 26/02/2005, 14h52
  5. Meilleure Méthode pour parcourir un tableau
    Par KPitN dans le forum MFC
    Réponses: 7
    Dernier message: 24/02/2005, 16h19

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