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 :

ArrayObject - optimisation


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 34
    Par défaut ArrayObject - optimisation
    Bonjour,

    Bon j'ai deux problémes...

    1- lorsque je charge mes objets j'utilise une boucle while, le problème c'est que quand elle a trouvé le premier objet, j'ai l'impression que le while de se remet pas au début de la collection du coup ça bug...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    		$i= $this->LesEntity->getIterator();
    		while ($i->valid() && $i->current()->getNom() != $unNom && $i->current() !=null )
    			{
    			$i->next();
    			}
    		return $i->current();
    2- là ce n'est pas vraiment un problème mais je voudrais optimiser la recherche de mes objets dans la collection. Le plus rapide c'est quoi? rechercher directement par attribut ou bien mais une clé -> object?

    ma fonction d'ajout:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		$nouvelleEntity = new Entity($id,$letype, $name, $name_First,$addr1, $zipCode, $city, $country, $tel,$fax, $mail, $login, $password, $timeZone, $language, $group,$company, $site,$equipe);            
                    $this->LesEntity->append($nouvelleEntity);

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    pourquoi ne pas faire un foreach ?

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 34
    Par défaut
    En effet ^^ étant donné que mon While marche pas, j'ai fait un foreach
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    		foreach ($this->LesEntity as $uneEntity)
    			{
    			 if($uneEntity->getId() == $unId)
                                 {
                                  return $uneEntity;
                                 }	
                            }
    Mais vu que je suis dans une optique d'optimisation, un while est surement moins gourmand qu'un foreach. Parce que le while s'arrête dès qu'il trouve alors que le foreach continu...

  4. #4
    Membre expérimenté Avatar de stephanegib2
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 152
    Par défaut
    Si tu entre dans ta condition, return arrête le script et renvoi le résultat. donc ton foreach n'arrivera pas à la fin.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 34
    Par défaut
    effectivement c'est pas bête :p

    Sinon le faîte de faire clé valeur aura une incidence niveau rapidité?

  6. #6
    Membre expérimenté Avatar de stephanegib2
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 152
    Par défaut
    peut être de quelque nano seconde, j'en sais rien.
    Si tu en a pas besoin ne fais pas, sinon pas le choix.

  7. #7
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 34
    Par défaut
    Non j'en ai pas faite encore, j'attendais d'avoir un avis extérieur

    Merci de ton aide !

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par elratus Voir le message
    effectivement c'est pas bête :p

    Sinon le faîte de faire clé valeur aura une incidence niveau rapidité?
    quelle clé ?
    Si tu veux utiliser les clé il faut utilise l'ArrayObject comme un array, donc n'utilise pas append

    fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $nouvelleEntity = new Entity($id,$letype, $name, $name_First,$addr1, $zipCode, $city, $country, $tel,$fax, $mail, $login, $password, $timeZone,     
    $this->LesEntity[$name] = $nouvelleEntity;
    et pour la recherche juste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $i = $this->LesEntity[$name];

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

Discussions similaires

  1. Optimisation de votre SGBDR et de vos requêtes...
    Par SQLpro dans le forum Langage SQL
    Réponses: 35
    Dernier message: 11/01/2013, 12h49
  2. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 4
    Dernier message: 05/02/2003, 09h54
  3. [VB6] [BDD] Optimisation de l'accès aux données
    Par LadyArwen dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 30/01/2003, 14h27
  4. [langage]Problème de temps de lecture, optimisation
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 08/01/2003, 09h47
  5. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 11h24

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