Fonction include plus rapide qu'un bout de code dans la page ? [PHP] - PHP - Programmation
Marsh Posté le 21-08-2007 à 10:37:19
Un include exécuté sera toujours plus long que d'avoir déjà le code dans le fichier principal mais la différence de temps d'exécution est vraiment négligeable tant qu'on en abuse pas.
Marsh Posté le 21-08-2007 à 11:04:34
y'a des fois faut arreter de rechercher uniquement la performance à tout prix. C'est completement et totalement négligeable (sauf cas particulier bien sur, si tu inclus un fichiers via ftp sur du RTC par exemple).
La question à se poser est plutot "comment bien segmenter mon code, bien le construire pour que ca soit simple pour moi de m'y retrouver, voir pour les autres si ils doivent y toucher" plutot que "comment gagner 0.000001s de temps de génération dont tout le monde se contrefout completement"
Marsh Posté le 21-08-2007 à 13:04:12
Moi je trouve que vous avez une notion du négligeable qui n'est pas la même que la mienne.
Le temps d'éxécution va dépendre de la taille du code mais quand on commence à tout déporter dans des fichiers et qu'on se retrouve avec de l'include dans un fichier inclus, qu'on a 5 fichiers inclus dans l'index, bah on commence à voir une bonne différence.
Néanmoins je suis totalement d'accord que parfois il faut privilégié la logique, la lisibilité.
Ma conclusion: tout ce qui est utilisé à coup sûr (peut être à l'exception d'un fichier de config) autant le balancer dans un fichier unique.
Par contre je me base sur ma façon de faire: un point d'entrée unique, c'est vrai que si c'est pour faire du doublon de code, autant inclure mais là il faudrait se poser d'autres questions avant
Marsh Posté le 21-08-2007 à 13:24:00
leflos5 a écrit : Moi je trouve que vous avez une notion du négligeable qui n'est pas la même que la mienne. |
Alors ca je demande des bench à l'appui, et de temps d'éxécution, et de charge systeme car je n'y crois pas une seule seconde. D'autant plus qu'aujourd'hui existent un paquet d'optimiseurs très efficace sur le marché qui justement se servent des include pour fonctionner
Marsh Posté le 21-08-2007 à 14:38:37
leflos5 a écrit : Moi je trouve que vous avez une notion du négligeable qui n'est pas la même que la mienne. |
Quel disque dur et qu'elle monté en charge?
Pour moi quelques centième de milliseconde de plus ou de moins ne représente pas une grosse différence. Evidement, la différence se sentir beaucoup plus vite avec des disques dur de portable qui tournent à 4200 RPM.
Marsh Posté le 21-08-2007 à 22:56:14
C'est peut être ça alors...
Celà dit je parlais plutot en terme de centième voir dizième de seconde. Passer de 0,010 à 0,050 par exemple et bah ça fait un facteur 5 et donc un peu un e augmentation de 400%.
Certes c'est peut être pas grand chose, mais imaginez sur un site en charge ça soulagerait pas mal
C'est le même débat que le double/simple quote, à l'échelle atomique ça change rien en soi, à l'échelle de centaines/milliers d'utilisateurs le serveur vous permettra d'avoir plus de connexions possible (avant de changer pour une machine plus puissante) en codant simplement logiquement: une chaine est une chaine, un chaine qui doit être interprêtée est une chaine qui doit être interprêtée.
De même un fichier qui est inclu systématiquement n'a pas forcément sa place à part, si la logique de l'ensemble est correcte, quoi de surprenant d'avoir plusieurs classes qui servent en même temps dans un but unique dans le même fichier?
La microoptimisation c'est un terme inventé par ceux qui en ont rien à battre de coder proprement, y'a pas de petits profits même en développement.
Vous avez déjà regardé la différence entre un isset() et un is_* en fonction du type? JE trouve ça impressionnant, surtout quand y'en a 60 dans une exécution Alors on rajoute les double quote qui servent à rien, les includes évitables, les variables non initialisées/pas au bon type et on passe de 0,050 à 0,150. Tripler c'est pas négligeable pour moi.
J'admets que le matériel compte mais j'ai un portable qui se traine avec des valeurs oscillantes, et un serveur qui tourne très bien avec des valeurs fixes et beaucoup plus basses. Je me fie aux valeurs du serveur (Athlon 3200+ avec 1 Go de ram à 333Mhz et deux disques à 7200tr avec 8 et 16 Mo de cache un pour le système l'autre pour le reste dont php et les scripts)
Marsh Posté le 22-08-2007 à 02:57:22
ba ensuite c'est un débat, mais c'est clair que pour moi coder proprement c'est d'abord coder avec une logique conceptuelle, et certainement pas une logique de microoptimisation de code.
Pour les bench je demande à voir des valeurs précises car je doute que faire des include, meme une vaingtaine, prenne 0.1s sur une achine digne de ce nom ou crée un surplus significatif en charge
Marsh Posté le 23-08-2007 à 00:25:02
Donc coder avec la logique conceptuelle associée au langage en question fait que tu codes dans le sens de l'optimisation CQFD
Donc pas de "c"."h"."a"."i"."n"."e" par exemple mais un 'chaine'. C'est pas de la micro-optimisation c'est du bon sens, si bon sens il y a on doit pas parler de micro-optimisation
Marsh Posté le 23-08-2007 à 00:32:34
Donc faire des includes tu peux y aller, mais fais pas 20 includes pour le plaisir de séparer des choses pour te pallucher sur la lisibilité de tes fichiers de 50 lignes alors que ça devrai aller ensemble
C'est comme pour tout en php: faut garder en tête que c'est de l'interprêté (sauf si d'ailleurs tu utilises un cache d'opcode mais j'en ai toujours pas trouver un simple d'utilisation en dehors du code lui même et sans contraintes monumentale et gratuit et c'est dommage) donc la lourdeur tu te la tapes à chaque page demandée (faire un script lourd pour des besoins d'admin c'est rien, mais pour les visiteurs tant que la machine tient c'est bon mais pourquoi pas faire tenir plus de visiteur sur la même machine tel est mon point de vue )
Marsh Posté le 21-08-2007 à 08:45:25
Bonjour,
j'aimerais savoir si le fait de mettre des include contenant du code PHP (accès BD, requete et tout le toutim) dans ma page pricipale ralentit l'affichage de cette dernière ?
Vous faites comment vous ? Des includes ou alors vous écrivez tout en dur sur la même page ?
Merci pour votre retour d'expérience