06-06-2011, 07:00 PM
moi j'aime bien les
case '/w';case'/whisper', tu trim() ce qui reste et basta
case '/w';case'/whisper', tu trim() ce qui reste et basta
06-06-2011, 07:00 PM
moi j'aime bien les
case '/w';case'/whisper', tu trim() ce qui reste et basta
06-06-2011, 07:43 PM
C'est marrant j'ai mis en place cette fonctionnalité dans mon chat récemment,
au début je suis parti sur un if($message[0] == '/') et je commençais à me prendre la tete sur comment recup la cmd et les arguments (le split sur l'espace marche pas sinon ça veux dire que ton (tes) argument(s) (si c'est un message par exemple) ne peut pas contenir d'espace (fort ennuyeux donc)) Mais finalement, sephi m'a fait remarquer qu'une expression était très efficace et pas casse couille du tout. Tu fait le preg_match et c'est du tout cuit, il te récupère le cmd et les arguments dans des cases d'un tableau prêt à l'emploi. Après cela, c'est trivial de faire le traitement qui convient.
Dévotion, jeu multijoueur gratuit par navigateur de stratégie et de conquête
The Magic Institute, le jeu de magie médieval fantastique gratuit en ligne Rapture Studio : créateur de divertissement pour tous JePolitique.fr - débattons ensemble JécrisLaConstitution.fr - ne laissons pas les Hommes aux pouvoirs écrire les règles du pouvoir Je Deviens Citoyen (Association à but non lucratif)
07-06-2011, 12:17 AM
C'est pas vraiment un hasard. Il est venu me trouver quelques heures après toi avec le même besoin. Je lui ai donc proposé d'ouvrir une discussion.
Les implémentations sans regexp (je les posterais plus tard, je suis sur mon téléphone) sont effectivement plus performantes (~ 30%).
Ah bon, tu es sur mon jeu, Vegetaland? tu as quel pseudo? ^^
D'où tu sors la comparaison de perf sinon? ça m'interesse! Surtout que gagner 30% signifierais justement de ne pas garder le système de regexp meme si c'est quand meme du tout cuit.
Dévotion, jeu multijoueur gratuit par navigateur de stratégie et de conquête
The Magic Institute, le jeu de magie médieval fantastique gratuit en ligne Rapture Studio : créateur de divertissement pour tous JePolitique.fr - débattons ensemble JécrisLaConstitution.fr - ne laissons pas les Hommes aux pouvoirs écrire les règles du pouvoir Je Deviens Citoyen (Association à but non lucratif)
07-06-2011, 05:28 PM
(Modification du message : 07-06-2011, 10:18 PM par Sephi-Chan.)
Je ne pense pas qu'il sois sur Devotion, mais il est venu me demander comment implémenter un tel système de commandes dans son chat.
Voici l'autre implémentation, plus efficace :
D'ailleurs j'ai noté un comportement assez curieux : sur ma machine, ce code est moins performant si j'enlève le if qui englobe ! Voici le code de benchmark et le résultat du benchmark :
07-06-2011, 07:15 PM
étrange ... peut-être qu'index() est une fonction qui bouffe, t'as pas un truc équivalent au php ?
if ($message[0] == '/')
07-06-2011, 07:53 PM
(07-06-2011, 07:15 PM)niahoo a écrit : étrange ... peut-être qu'index() est une fonction qui bouffe, t'as pas un truc équivalent au php ? Justement, ce qui est curieux, c'est que la version avec le if est plus rapide ! On peut accéder aux caractères par leur index au sein de la chaîne de la même façon qu'en PHP (les caractères parasites en moins, bien sûr). Cependant, cette version n'offre pas de gain de performances.
07-06-2011, 09:25 PM
ben avec le if c'est plus rapide parce que les message sans commandes ne rentrent pas dans le switch non ? à moins que tu n'aies testé qu'avec des commandes
07-06-2011, 09:50 PM
Oui, c'est le même message (avec une commande) qui est utilisé dans le million d'iterarions.
|
|