JeuWeb - Crée ton jeu par navigateur
petite question sur include. - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : petite question sur include. (/showthread.php?tid=1966)

Pages : 1 2 3


RE: petite question sur include. - gameprog2 - 29-09-2010

N'empeche je vois que mes petites questions de noob en php font débattre souvent sur du code, c'est donc que mes questions servent à quelque chose on dirait Tongue


RE: petite question sur include. - Anthor - 29-09-2010

(29-09-2010, 08:26 PM)niahoo a écrit : ai-je dit le contraire ?

C'est bien pour cela que je conseille de traduire ce que signifie la fonction, même sans doc ça reste très clair dans le cas présent. Rien de méchant.


RE: petite question sur include. - atra27 - 30-09-2010

(29-09-2010, 09:08 PM)niahoo a écrit : les _once ça sert à ne pas réévaluer les définitions, c'est tout. l'exemple qui à été donné est bon, tu peux avoir besoin de définitions pour plusieurs fichiers de fonctions, de classes, et chacun d'eux requiert un fichier "parent".

et c'est là que la fonction __autoload intervient.

En général le parent fait l'include du fils et pas l'inverse...

Bref pour les once, je maintient qu'une appli bien codée peut s'en passer...
Et faites moi un comparatif entre l'include et include_once.. vous verrez que _once est plus long (prend aussi plus de memoire il me semble??)


RE: petite question sur include. - niahoo - 30-09-2010

ben non quand je fais une classe qui hérite d'une autre, je fous pas le require dans le fichier de la classe parente, ce n'est pas logique, elle ne peut pas "savoir" ce qui va hériter d'elle.

et je suis d'accord qu'on peut facilement se passer des once.


RE: petite question sur include. - Ter Rowan - 30-09-2010

(30-09-2010, 07:37 PM)atra27 a écrit : En général le parent fait l'include du fils et pas l'inverse...

Ah ben j'ai toujours vu le contraire (même si dans de rare cas j'inclus les fils dans le père)

Je ne vois pas, par exemple, dans un pattern de type factory la pertinence d'inclure les fichiers de n classes potentielles pour n'en instanciée que deux ou trois différentes (sans préjuger du diagramme de classes qui peut avoir une profondeur plus ou moins importante) par défaut dans une éventuelle classe mère (et laquelle ?) ou dans la factory elle même

maintenant le comparatif que je vois ne me démontre pas particulièrement l'intérêt d'abandonner le once dans les cas standards :

Citation :I redid some testing. I implemented 3 different kinds of tests:
1) include_once
2) Checking if class_exists (where the implementation of the class is in the file obviously)
3) Setting a bool and checking every time.
The results differ a LOT when using a lot of iterations, and still noticeable when using a few:

For 10000 iterations, include_once: 0.19029593467712ms
For 10000 iterations, class_exists: 0.0049629211425781ms
For 10000 iterations, bool check: 0.00084900856018066ms

For 10 iterations, include_once: 0.00040292739868164ms
For 10 iterations, class_exists: 0.00012707710266113ms
For 10 iterations, bool check: 0.00011205673217773ms

gagner 0.0003 ms pour 10 include, waouh, ce n'est pas pour moi une source d'optimisation

source : une recherche google, sachant que les tests de départ sont mauvais, l'intérêt est dans les commentaires


RE: petite question sur include. - atra27 - 30-09-2010

et autoload? Big Grin

Et ton test prouve que c'est quand méme mieux de faire sans il me semble...


RE: petite question sur include. - Ter Rowan - 30-09-2010

(30-09-2010, 07:58 PM)atra27 a écrit : et autoload? Big Grin

Et ton test prouve que c'est quand méme mieux de faire sans il me semble...

bien sûr qu'il prouve que c'est mieux sans, c'est mieux de 0.3 millionième de seconde pour 10 classes à charger

quand à l'autoload c'est quoi à part une fonction qui (au delà des tests) voit dans son code un "include" ou un "require" ? (du moins quand j'ai cherché je croyais à un truc vraiment magique mais je ne suis tombé que sur des exemples où il y avait un include)

alors oui l'autoload sera peut être plus performant que le "once" (cela dépend de ce que le développeur met dans sa fonction autoload) mais de combien ? certainement du même ordre d'idée de 0.3 millionième de seconde ^^

je ne conteste pas que once est plus lent que le reste, je dis juste que ce n'est pas significatif pour se priver de cette protection dans les cas standards de développement Smile


RE: petite question sur include. - niahoo - 30-09-2010

j'ai bien fait de ne pas poster, c'est exactement ce que je pensais.


(par contre tu fais un lapsus: "je ne conteste pas que once est plus rapide que le reste" => "moins rapide")


RE: petite question sur include. - Ter Rowan - 30-09-2010

(30-09-2010, 08:22 PM)niahoo a écrit : (par contre tu fais un lapsus: "je ne conteste pas que once est plus rapide que le reste" => "moins rapide")
corrigé ^^