Page 1 sur 1

switch() gourmand ?

Posté : 08 déc. 2008, 15:47
par VaN
Bonjour à tous,

J'ai un fichier index.php, qui utilise un système d'include() pour afficher bannière, menu, contenu, footer.

Voilà comment se passe mon affichage de contenu :
<div class="right">
        	
            <?php
		
			isset($_GET['module']) ? '' : $_GET['module'] = 'home';

			switch($_GET['module']) {
			
				case 'home' :
					include 'includes/mod.promotions.php';
					include 'includes/mod.nouveautes.php';
					break;
				case 'register' :
					include 'includes/mod.register.php';
					break;
				case 'activate' :
					include 'includes/mod.activate.php';
					break;
				case 'retrievePassword' :
					include 'includes/mod.retrievePassword.php';
					break;
				case 'createAnnonce' :
					include 'includes/mod.annonces.create.php';
					break;
				case 'displayAnnonce' :
					include 'includes/mod.annonces.display.php';
					break;
				case 'buyAnnonces' :
					include 'includes/mod.annonces.buy.php';
					break;
				case 'compte' :
					include 'includes/mod.monCompte.php';
					break;
				case 'profile' :
					include 'includes/mod.profile.php';
					break;
				case 'alertes' :
					include 'includes/mod.alertes.php';
					break;
				case 'page' :
					include 'includes/mod.pages.php';
					break;
				case 'factures' :
					include 'includes/mod.factures.php';
					break;
				case 'partenaires' :
					include 'includes/mod.partenaires.php';
					break;
				case 'search' :
					include 'includes/mod.search.php';
					break;
				case 'contact' :
					include 'includes/mod.contact.php';
					break;
}
			?>
            
         </div> 
Mon problème est qu'au moment du chargement de la page, il y a clairement un temps d'attente, au moment du switch(). Switch() est-elle une fonction gourmande ? Existe t'il un moyen d'optimiser ce bout de code ?

Posté : 08 déc. 2008, 15:58
par AB
Tu pourrais éventuellement remplacer ton switch par un tableau, mais à part faciliter la maintenance il ne devrait pas y avoir de différence significative au niveau du temps de traitement surtout pour un si petit nombre de cases. Ton pb ne vient certainement de ton ton switch mais de ce que tu inclus.

Posté : 08 déc. 2008, 15:58
par yaug
bonjour à toi.
Je ne pense pas dire de bêtises (on sait jamais) mais le switch est une fonction plutôt optimisée qui ne prend pas trop de temps.
Ca me semble assez bizarre que cela te prenne du temps.
Le ralentissement ne viendrait pas plutôt de l'include ? (genre gros fichier bien long ?) :D
Au pire utilies un benchmark pour voir le temps d'affichage des includes.

Posté : 08 déc. 2008, 16:07
par VaN
Alors en effet, je viens de faire quelques tests, et il semblerait que ce ne soit pas le switch() le problème, mais un appel javascript un peu plus haut dans la page (pour changer l'apparence d'un <select>).

Problème résolu donc. Merci à vous.

Posté : 08 déc. 2008, 18:44
par lux
L'avantage du switch si je me souviens bien, une fois qu'il à fini le cas, il ne continue pas de chercher. Donc normalement c'est optimisé 8-)

Posté : 08 déc. 2008, 18:47
par chrislabricole
L'avantage du switch si je me souviens bien, une fois qu'il à fini le cas, il ne continue pas de chercher.
Si il y a le
break;
:P

Posté : 08 déc. 2008, 18:49
par lux
Merci pour cette précision que je n'avais pas mentionné :oops: