![]() |
ajout de subcommandes à la commande string - Version imprimable +- Communauté Eggdrop (https://forum.eggdrop.fr) +-- Forum : Eggdrop et scripts (https://forum.eggdrop.fr/forumdisplay.php?fid=8) +--- Forum : Un peu plus loin (https://forum.eggdrop.fr/forumdisplay.php?fid=16) +--- Sujet : ajout de subcommandes à la commande string (/showthread.php?tid=918) |
ajout de subcommandes à la commande string - djkenny - 24/03/2011 j'ai trouvé le moyen d'ajouter des subcommandes à string j ai donc créé un petit package contenant 4 commandes supplémentaire - string empty <string> : retourne 1 si string=="" sinon retourne 0 Code : % string empty "" - string xchang <string> <index1> <index2> : échange les 2 indexes Code : % string xchang abcdef 1 end - string randomize <string> : mélange string de façon aléatoire Code : % string randomize abcdef - string sort ?-option value ...? <string> : utilise la commande lsort de façon a classer string dans l'ordre désiré (en fonction des options spécifié) (cf man lsort pour plus d info sur les options) Code : % string sort -dictionary dfecba bien entendu les subcommandes de base de string restent actives si vous avez des idées de subcommandes que je pourrais ajouter RE: ajout de subcommandes à la commande string - MenzAgitat - 24/03/2011 Bonne idée. Quelques idées/questions en vrac : Y'a-t-il une raison particulière à utiliser set string plutôt que return $string ? __________
Pour une librairie de ce genre, la rapidité d'exécution est cruciale et quelques optimisations seraient les bienvenues. Même si ça n'a l'air de rien, quelques µs gagnées sur une proc exécutée plusieurs fois par seconde peuvent avoir un effet sensible.Voici à quoi je fais allusion : tcl
pour tester une condition impliquant une string, eq et ne sont plus rapides que == et != (et inversement pour tester une équivalence numérique), donc : tcl
__________ tcl
deviendrait tcl
On économise ainsi quelques instructions. A noter aussi que ::tcl::string::replace s'exécute plus rapidement que string replace car ça épargne à l'interpréteur la peine de devoir localiser le namespace. Même chose pour les string length qui deviendront des ::tcl::string::length et les string empty qui deviendront des ::tcl::string::empty. __________ tcl
pourrait s'écrire tcl
et d'autres cas similaires ci et là. RE: ajout de subcommandes à la commande string - djkenny - 24/03/2011 Citation :Y'a-t-il une raison particulière à utiliser set string plutôt que return $string ?et bien set est la syntaxe par défaut de tcl sachant que $ est un raccourci vers set "return $string" est équivalent a "return [set string]" sinon == ou eq on un temps d'exécution strictement identique Citation :TCL : j'aime bien garder un code claire d'où l utilisation de 2 lignes. Par contre pour l'utilisation du path complet ca pourrait être une bonne idée, il y a un gain de 2us / 50us en moyenne RE: ajout de subcommandes à la commande string - djkenny - 24/03/2011 voila j ai modifié les path, sur un "string randomize 0123456789" le gain de performance est proche des 80% (à cause de la boucle surement) je ne pensais pas qu'on y gagnerai autant RE: ajout de subcommandes à la commande string - MenzAgitat - 24/03/2011 djkenny a écrit :sinon == ou eq on un temps d'exécution strictement identiqueMes tests disent le contraire : Citation :[01:12:48] <MenzAgitat> .tcl time {expr {$testtest eq "test"}} 1000000 Citation :[01:12:57] <MenzAgitat> .tcl time {expr {$testtest == "test"}} 1000000 RE: ajout de subcommandes à la commande string - djkenny - 24/03/2011 Citation :[01:22] <+Dj_KennY> &tcl time {expr {1 == 1}} 10000 Citation :[01:22] <+Dj_KennY> &tcl time {expr {1 eq 1}} 10000 RE: ajout de subcommandes à la commande string - MenzAgitat - 24/03/2011 Dans mon test, il était question d'une string non-numérique, refais le test avec la même pour que les résultats soient comparables. RE: ajout de subcommandes à la commande string - djkenny - 24/03/2011 effectivement avec une variable le resultat change trés legerement Citation :avec eq Citation :avec ==mais bon la différence se compte en nano secondes ![]() édit: bizarrement avec un string vide j obtient le résultat inverse RE: ajout de subcommandes à la commande string - djkenny - 24/03/2011 Citation :avec == Citation :avec eq RE: ajout de subcommandes à la commande string - BdS - 24/03/2011 Je bave quand je vois votre niveau dans ce langage ! RE: ajout de subcommandes à la commande string - djkenny - 24/03/2011 après quelques test complémentaire jai décidé d utiliser string equal tcl
RE: ajout de subcommandes à la commande string - ZarTek - 20/06/2012 BdS a écrit :Je bave quand je vois votre niveau dans ce langage ! Ouais assez sympa, j'ai appris pas mal de chose en quelque postes ^^ RE: ajout de subcommandes à la commande string - djkenny - 21/06/2012 salut, la dernière version |