Alternative plus rapide à un switch php


sff
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 336
Inscription: 2 Fév 2005

Alternative plus rapide à un switch php

Message le Sam Déc 05, 2009 17:22

Bonsoir,

Dans mon fonction, je possède un switch relativement long. J'aimerais savoir si il n'existe pas une alternative qui serait plus rapide à l'exécution que le switch ou que la fonction tout simplement.

Merci

Code: Tout sélectionner
function special($special) {// Fonction francise special.

   switch ($special) {
   case 'strength': $special0 ='force'; break;
   case 'dexterity': $special0 ='dextérité'; break;
   case 'attackpower': $special0 ='pouvoir d\'attaque'; break;
   case 'defensepower': $special0 ='pouvoir de défense'; break;
   case 'goldbonus': $special0 ='bonus rubis'; break;
   case 'spellbonus': $special0 ='bonus sorts'; break;
   case 'expbonus': $special0 ='expérience bonus'; break;
   case 'currenthp': $special0 ='HP'; break;
   case 'currentmp': $special0 ='MP'; break;
   case 'currenttp': $special0 ='TP'; break;
   case 'maxhp': $special0 ='HP Max'; break;
   case 'maxmp': $special0 ='MP Max'; break;
   case 'maxtp': $special0 ='TP Max'; break;
      default : $special0 ='points HP, MP et TP';

   }

   return $special;
}


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1762
Inscription: 31 Aoû 2007

Re: Alternative plus rapide à un switch php

Message le Sam Déc 05, 2009 20:40

http://m-fernandez.developpez.com/articles/php/bench/#LIV-B

Tu verras que switch est plus rapide que des tests "de base". Tu pourrais peut-être voir pour un array mais bon, je pense que ta méthode reste la mieux.

sky
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 260
Inscription: 3 Mar 2003

Re: Alternative plus rapide à un switch php

Message le Dim Déc 06, 2009 2:47

Bonjour

Julia41 propose un truc beaucoup plus rapide qu'un switch, un array.

Un truc genre :

Code: Tout sélectionner
<?php
// tu place ton array de "conf" quelquepart
$mes_Conditions = array(
   'strength'       => 'force',
   'dexterity'      => 'dextérité',
   'attackpower'    => 'pouvoir d\'attaque',
   'defensepower'   => 'pouvoir de défense',
   'goldbonus'      => 'bonus rubis',
   'spellbonus'     => 'bonus sorts',
   'expbonus'       => 'expérience bonus',
   'currenthp'      => 'HP',
   'currentmp'      => 'MP',
   'currenttp'      => 'TP',
   'maxhp'          => 'HP Max',
   'maxmp'          => 'MP Max',
   'maxtp'          => 'TP Max'
);

// fonction special qui test si la clef existe
function special($mes_Conditions, $special='') {
   
    // la valeur par défaut si la clef n'existe pas
    $special0 = 'points HP, MP et TP';
   
    if(isset($mes_Conditions[$special]))
        $special0 = $mes_Conditions[$special];
   
    return $special0;
}
?>


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1762
Inscription: 31 Aoû 2007

Re: Alternative plus rapide à un switch php

Message le Dim Déc 06, 2009 11:19

Voilà, désolé j'étais à l'apéro alors je voulais pas dire de merdes hier soir.
Mais bon, l'array devrait quand même être moins performant au final, ça se benchmark quand même pour voir, mais la déclaration en array peut être pas mal aussi, tout dépends de l'utilisation.

sky
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 260
Inscription: 3 Mar 2003

Re: Alternative plus rapide à un switch php

Message le Lun Déc 07, 2009 16:06

Bonjour Julia,

Je ne suis pas en effet 100% certains que l'array soit beaucoup plus rapide... mais, je voie beaucoup plus que juste la rapidité de la déclaration : en utilisant un array, on rend cette fonction indépendante, plus besoin d'y revenir pour ajouter des actions / conditions. C'est tout de même pas négligeable :)

Sky


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité