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 :

PHP bench - Objet vs Tableau, serez-vous plus vigilant ?


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 397
    Points : 133
    Points
    133
    Par défaut PHP bench - Objet vs Tableau, serez-vous plus vigilant ?
    Bonjour,

    En pleine réflexion sur le full object en PHP : DAO, ORM, Entité, Collection...
    Faut-il ou pas, est-ce vraiment nécessaire ? Style objet ou procédurale ?
    J'en ai eu marre de chercher sur net et de lire tous les avis divergeants, je me suis décidé à réaliser un petit test moi même.
    Le résultat n'est pas surprenant, c'est plus coûteux mais la différence est vraiment importante.
    Sans compter la mémoire qui doit être également plus chargée.

    Qu'en pensez-vous ?

    Merci

    Apache 2.2.17, PHP 5.3.5
    http://img198.imageshack.us/img198/3039/bencho.png


    edit : note sur la mémoire

  2. #2
    Expert éminent sénior

    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
    Points : 10 726
    Points
    10 726
    Par défaut
    et stdClass ?

  3. #3
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 397
    Points : 133
    Points
    133
    Par défaut
    Avec stdClass() on descend à 5,5 de moyenne pour 1 000 000 mais ça perd d'intérêt.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            $oPersonne = new stdClass();
            $oPersonne->id      = 1;
            $oPersonne->nom     = 'Do';
            $oPersonne->ddn     = '2012-01-01';
            $oPersonne->sexe    = 1;
    Pour info la classe Personne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        Class Personne {
     
            protected $_id;
            protected $_nom;
            protected $_ddn;
            protected $_sexe;
     
            public function __construct($pId, $pNom, $pDdn, $pSexe) {
                $this->_id   = $pId;
                $this->_nom  = $pNom;
                $this->_ddn  = $pDdn;
                $this->_sexe = $pSexe;
            }
     
        }

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Le débat performances Objet vs Procédural est sans intérêt, on sait bien que l'objet prends plus de ressources.

    En revanche, il y a certaines choses qu'une architecture objet sait faire que ne pourra jamais faire les tableaux classiques:
    • héritage
    • polymorphisme
    • encapsulation
    • traits
    • réutilisation
    • factorisation
    • etc.


    Tu veux des performances pures ? Utilise le mode procédural et les tableaux ou mieux, oublie PHP et fait ça avec des langages plus performants.
    Tu veux faire une code réutilisable, sécurisé et facile à maintenir ? Utilise l'OOP (encore que tu puisse y arriver avec du procédural, le niveau de complexité ne sera jamais le même).

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Comme le dit benjamin si tu en es rendu à comparer la vitesse objet vs procédural et que tu as épuisé toutes les pistes d'optimisation classique c'est que le langage n'est peut être pas adapté à tes besoins.

    Un site en objet ou en procédural , honnêtement si les deux sont correctement codé tu verras jamais la différence (coté utilisateur, j'entends).

    Le seul risque de l'objet c'est qu'on à bien plus tendance à faire des couches de surcouche de sursurcouche comme le font si bien les FW à la mode en ce moment. Et là, effectivement, on se retrouve à faire un hello world en 5 sec.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 397
    Points : 133
    Points
    133
    Par défaut
    Le but de la comparaison n'est pas sur le fait de savoir qui est le plus consommateur mais la proportion entre les deux.

    J'essaie de peser le pour et le contre dans le cas d'un simple site web.

    Est-ce qu'un ORM accompagné de tous les setters et getters à son intérêt pour une charge multipliée par 4,5 ?

  7. #7
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    ça dépends, passer de 10Ms à 45Ms n'est pas perceptible par le client de toute façon. Et puis la rapidité d'une appli web dépends souvent moins de son architecture (à moins que tu programme avec les pieds) que des performances de ses requêtes SQL qui ont tendance à majorer tout le reste.

    Personnellement, j'utilise des architectures objet et la différence avec des archi procédurales est assez minime en réalité, tu y perds maximum quelques dizaines de Ms, ce qui n'est franchement pas grand-chose à moins d'avoir des besoins spécifiques.
    En revanche, je peux t'assurer que j'ai gagné de nombreuses heures de développement avec l'objet.

    A toi de voir

  8. #8
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Citation Envoyé par dorian53 Voir le message
    Est-ce qu'un ORM accompagné de tous les setters et getters à son intérêt pour une charge multipliée par 4,5 ?
    pour le coup l'ORM n'est à mon avis pas un bon exemple car il fait rentrer en jeux la BDD et certains (tous ?) ORM sont des gouffres à performance justement à cause de leur interaction avec la bdd et pas forcément à cause de leur structure objet.

    Pour ce qui est de Objet vs Procédural , ca va dépendre de ton projet et des outils à ta disposition.

    Micro site = procédural , tu vas aller vite , tu n'auras probablement jamais besoin de retoucher au code , bref tu vas à l'essentiel.

    Autre (appli web , gros site ...) la perte de performance et donc potentiellement les dépense supplémentaire dans le hardware seront largement compensé par le temps gagné en maintenance et évolutions (mais pas en temps de dév pur).
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Search/Replace, avez vous plus rapide ?
    Par Bruno13 dans le forum Langage
    Réponses: 7
    Dernier message: 30/01/2006, 15h49
  2. [PHP-JS] Passer un tableau php en tableau JS
    Par dark_vidor dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 22/12/2005, 11h36
  3. [Librairies] [PHP] Imprimer un énorme tableau sur plusieurs pages A4
    Par Doc.Fusion dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 30/11/2005, 17h45
  4. [PHP-JS] Remplir un tableau javascript selon un tableau php
    Par jerome38000 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/01/2005, 14h02
  5. Declaration d objets en tableau
    Par Spin dans le forum Composants VCL
    Réponses: 6
    Dernier message: 16/03/2003, 22h18

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