Objets VS Tableaux

Eléphant du PHP | 113 Messages

08 juin 2006, 09:16

Bonjour à tous, je voudrais aborder avec vous le problèmes des objets PHP5.
Actuellement j'ai développé un moteur de combat pour un jeu se servant de tableaux (certains multidimensionnels).

Ma question est en réalité très simple, les objets sont ils plus efficace que les tableaux?

Dans la mesure ou j'utilise pas mal les fonctions prédéfinit de PHP pour les tableaux (notamment les fonctions de tris), un équivalent existe t'il pour les objets ou faut il tout recoder à la main?

Voila, ais je un intérêt à redévelopper mon moteur en objet en terme de performance?

Wells

Mammouth du PHP | 1311 Messages

08 juin 2006, 09:24

Salut
si les perf sont ta priorioté reste en procédural

Eléphant du PHP | 113 Messages

08 juin 2006, 09:47

Dans la mesure ou l'on va se retrouver avec des combats de plusieurs milliers de soldats des deux cotés, oui la perf est LA priorité.
Je précise tout de meme que le script tournera en local via EasyPHP.

Eléphant du PHP | 140 Messages

08 juin 2006, 10:35

Dans la mesure ou l'on va se retrouver avec des combats de plusieurs milliers de soldats des deux cotés, oui la perf est LA priorité.
Il faut tout de meme etre conscient que le gain de temps ne sera tout de meme pas enorme en etant en procedural (de l'ordre de 20%).
Donc si ton script prend 1h pour s'executer avec des objets et que cela te semble beaucoup trop long, ton probleme ne sera pas resolu en passant en procedural.
Dans ce cas, c'est un probleme de design qu'il te faut resoudre.

Autre remarque si ton moteur est très compliqué, l'avantage de l'objet sera la maintenabilite.

Conclusion, le choix n'est pas forcemment simple.
]Je précise tout de meme que le script tournera en local via EasyPHP.
Et ? Quelles consequences penses-tu que cela a ?

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

08 juin 2006, 20:53

si les perf sont ta priorioté reste en procédural
Je ne pense pas que ce soit le concept de programmation qui intéresse Wells, mais simplement la méthode de stockage. Ceci dit, je n'ai jamais compris le (faux) argument "pour les perfs, n'utilisez pas d'objets". Il ne fait aucun doute que $this->var est 2 fois plus lent que $var mais en fait, qu'est-ce que ça représente en réalité ? quelques nanosecondes.

Dans la majorité des cas, le plus important dans l'optimisation d'un programme c'est sa conception, pas son implémentation. Par exemple, je lis que chaque armée possède des milliers de soldats. S'il faut exécuter une routine pour chacun de ces soldats alors on peut facilement prédire que les performances vont être mauvaises. Avant de se lancer dans une optimisation prémature, il vaut mieux essayer d'améliorer le design des combats. Par exemple, les soldats sont certainement arrangés par bataillon. Plutôt que de gérer le combat de chaque soldat contre son adversaire, il est probablement possible de mesurer la force d'un bataillon par rapport à celle du bataillon d'en face et décider d'un nombre plus ou moins aléatoire de pertes de chaque côté. Ainsi, on parvient au même résultat en nécessitant bien moins de calculs. (je rappelle que ce n'est qu'un exemple, il ne s'applique pas forcément ici)
Quelles consequences penses-tu que cela a ?
Ça indique que le programme tournera donc sur un serveur plus ou moins dédié. En tout cas, avec plus de puissance que chez Free et surtout la possibilité de changer le php.ini (max_execution_time par exemple).

Eléphant du PHP | 113 Messages

09 juin 2006, 10:00

Et bien les conséquances c'est faire tourner un script sur un serveur mutualisé ou en local sur ta machine (qui est quand meme assez puissante) sa n'a rien a voir niveau temps d'éxécution ;)

Autrement, ce qui m'inquiete un peu c'est en fait le fait que j'utilise beaucoup de fonctions sur les tableaux.

Par exemple pour choisir le prochain soldat qui tire, j'utilise la fonction qui tire une clé aléatoirement dans un talbeau.

En objet il me faudrait coder moi meme l'equivalence de cette fonction non?