MINI TUTO SUR L'OPTIMISATION

fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 - 30 mai 2005 à 19:47
IceTempest Messages postés 19 Date d'inscription dimanche 12 juin 2005 Statut Membre Dernière intervention 23 novembre 2006 - 4 juil. 2005 à 12:01
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/31714-mini-tuto-sur-l-optimisation

IceTempest Messages postés 19 Date d'inscription dimanche 12 juin 2005 Statut Membre Dernière intervention 23 novembre 2006
4 juil. 2005 à 12:01
Tuto intéressant et qui aide beaucoup.
un seul mot à dire : Merci
Note : 8/10
cs_Frecky Messages postés 85 Date d'inscription lundi 18 février 2002 Statut Membre Dernière intervention 20 novembre 2005
23 juin 2005 à 20:46
le $iif() est plus lent, pour la persone qui ecrit le code, parfait, pour le prog qui optimise, non, alors lui il tenterais de le metre en if, si il ne peut pas, il le laisse tel quel, c'est comme sa je le voit un peu moi.., tu comence, de base il ameliore se qu'il peut, ensuite tu ameliore ton programe pour qu,Il ameliore encore + les code, etc. Mais c'est vrai que de faire un tel prog en mIRC script serais fou, c,est pour cela qu'il faudrais opté pour un autre language.
cs_tofu Messages postés 1726 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 13 juin 2009 1
23 juin 2005 à 10:55
je suis pas sur que ce soit possible de faire un tel prog en mIRC, parce que tout dépend du contexte, par exemple un $iif() dans un while est gênant si le nb de fois qu'on reboucle est important, mais si on reboucle une dizaine de fois on peut laisser le $iif(), si on a affaire à un while dont le nb de rebouclage est une variable qui peut évoluer grandement, cmt un programme pourrait prendre ça en considération .. jss assez septique mais je px me tromper c'est p-ê réalisable..
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
23 juin 2005 à 00:13
C'est globalement une bonne idée
D'ailleurs ca se fait sur d'autres langages, par exemple Perl, le roi des langages de script, vérifie la syntaxe, et optimise plein de trucs avant d'exécuter le code.
Cela dit, ca serait très difficile, perso je manque de temps pour ca, mais porqué no ;)
cs_Frecky Messages postés 85 Date d'inscription lundi 18 février 2002 Statut Membre Dernière intervention 20 novembre 2005
23 juin 2005 à 00:05
J'ai un tres bon projet pour vous, mais qui peut etre compliquer a faire. trouver tout se qui est + rapide que d'autre function etc, ensuite créer un programe qui "optimise" un script. Ex:
la persone code de la manière qu'elle le veut, $iif ou if, peut imporrte :P, ensuite elle pase son script dans le programe et pouff, il optimise tout, les $iif les transforme en if, les goto en while, etc, tout dans la mesure du possible bien-sur .. Mais comme je dit bien au debut. Cela peut etre compliquer, mais quel beau projet cela peut donner! Sur de gros code le programe pourais sauvé beaucoup de miliseconde partout et donc a la fin donner un script qui roule tres vite!
cs_tofu Messages postés 1726 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 13 juin 2009 1
14 juin 2005 à 07:25
"Cela facilitera la relecture de votre code et le cheminement des informations."

j'ai parlé de la longueur du code? je pense pas.

et de toute façon même en ne regroupant pas les 'on dialog' ça évalue à chaque mouvement de souris pour voir si ton on dialog est bien l'init ou un sclick qd même donc bon.. on gagnera peut-être un peu en rapidité certe, mais en va vite avoir un code vrment long ds lequel on se retrouve plus à moins d'être extrèmement bien organisé..
Proutie66 Messages postés 141 Date d'inscription samedi 19 octobre 2002 Statut Membre Dernière intervention 14 avril 2008
14 juin 2005 à 01:04
Certaines amélioration sont par contre totalement ridicule.

Autant les "on *:TEXT:" à regrouper sont indispensable , autant regrouper les events on dialog ( init et sclick par exemple ) est stupide.

ON gagne une ligne pour un évenement fait une fois , mais on applique 2 fois plus de " if" ) chaque mouvement de souris.
cs_tofu Messages postés 1726 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 13 juin 2009 1
4 juin 2005 à 16:34
oui, tu px utiliser un $findfile() ds un 'on text' si t'en as envi, c'est un identifieur de mIRC utilisable partout.
pppaaahhh Messages postés 28 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 14 avril 2007
4 juin 2005 à 14:55
trés bien ce tuto;
pour Findfile c'est possible aussi de ne pas faire appel à d'alias et variable:
$findfile($null,$null,$null,$findfile($mircdir,*.*,0,echo -a $1-))
cs_tofu Messages postés 1726 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 13 juin 2009 1
2 juin 2005 à 12:08
oui j'ai commencé à m'attaquer à filter mais comme je l'ai jms utilisée j'ai du mal à tt piger je ferais quelques tests pour me rendre compte..
en ce qui concerne le loadbuf/savebuf, jpense que je mettrais ça ds la partie sur les modes de stockage avec les fichiers txt/ini ;o)

et pour le istok, hier ds la nuit javais commencé à rédiger une partie la dessus c'est en cours ;)
MaX_62 Messages postés 879 Date d'inscription vendredi 22 octobre 2004 Statut Membre Dernière intervention 29 juin 2007
2 juin 2005 à 11:18
Encore un truc pour les conditions :

alias testou {
var %i 1 , %t $ticks
while (%i <= 20000) {
if (%i 1 || %i 2 || %i == 3 || %i == 5) { inc %i }
else inc %i
}
echo -a Avec || : $calc($ticks - %t) ms
}
J'ai obtenu 2854 ms en utilisant cette méthode...


alias testistok {
var %i 1 , %t $ticks
while (%i <= 20000) {
if ($istok(1.2.3.5,%i,46)) { inc %i }
else inc %i
}
echo -a Avec istok : $calc($ticks - %t) ms
}
Cette fois ci, 1693 ms, c'est flagrant :]
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
2 juin 2005 à 10:31
montrer* (je suis un illettré)
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
2 juin 2005 à 10:31
Rien a dire, si t'as le temps tu devrais montré plus en détail les intérêts de loadbuf/savebuf, pour éviter du file handling par exemple (compatibilité vec les vieilles versions) ou pour trier du texte (loadbuf dans une window en +s (?)) et pi si t'as le temps de t'attaquer a /filter...
En tout cas ce tuto va devenir vraiment complet, bonne continuation
cs_tofu Messages postés 1726 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 13 juin 2009 1
2 juin 2005 à 09:45
hier suite à un commentaire de Monark sur un autre site où j'ai posté ce tuto, j'ai fini d'être convaincu de continuer mais comme vous l'avez peut-être vu sur la page au format html la grande partie s'appelle 'généralités' , donc par la suite je vais m'attaquer sur des parties bien plus précises, par exemple tout ce qui concerne le stockage de données (variables/htables/fichiers) etc, pictures windows , et plein d'autres choses ;)
MaX_62 Messages postés 879 Date d'inscription vendredi 22 octobre 2004 Statut Membre Dernière intervention 29 juin 2007
2 juin 2005 à 07:56
Excellente mise a jour :]
Le 10/10 fera l'affaire...
ps : je connaissais pas le truc du "isnum" :)
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
30 mai 2005 à 22:10
Dommage que ce soit si court =)
Sinon, j'approuve pas pour les multiples $iif emboités qui t'empêchent de changer le moindre truc sous peine de plus savoir ou faut rouvrir/refermer une parenthèse..
Pour le $b j'avais jamais pensé a le faire comme ca, avec le nb de lettres en $prop, bonne idée ;)
cs_tofu Messages postés 1726 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 13 juin 2009 1
30 mai 2005 à 20:50
merci d'apporter votre contribution, j'avais écrit ça ya déjà quelques temps déjà, et je l'ai posté tel quel, j'updaterais peut-être si je trouve le temps de continuer, par ailleurs, toute chose à rajouter sera la bienvenue donc hésitez pas à commenter ;)
MaX_62 Messages postés 879 Date d'inscription vendredi 22 octobre 2004 Statut Membre Dernière intervention 29 juin 2007
30 mai 2005 à 20:21
Faut préciser tout de même que If/Else est plus rapide que $iif ... Ca raccourcit le code, mais des fois c'est la rapidité qui est la plus importante - en picwin par exemple -.
Exemple :

alias testiif {
var %i 1 , %t $ticks
while (%i <= 20000) {
$iif(. isin $calc(%i /2),unset %i [ $+ [ $calc(%i - 1) ] ],set %i [ $+ [ %i ] ] 1)
inc %i
}
echo -a $calc($ticks - %t)
}
--> Cet alias (très mal codé) va /set 20000 variables et les retirer ensuite. Je l'éxécute quelques fois, et j'obtiens les temps d'éxécution suivants :
5197 ms
5027 ms
5018 ms
5097 ms


alias testif {
var %i 1 , %t $ticks
while (%i <= 20000) {
if (. isin $calc(%i /2)) unset %i [ $+ [ $calc(%i - 1) ] ]
else set %i [ $+ [ %i ] ] 1
inc %i
}
echo -a $calc($ticks - %t)
}
--> Même alias, cette fois ci en utilisant un If/Else, j'obtiens les temps suivants :
3104 ms
3425 ms
3485 ms
3274 ms

On voit tout de suite la différence... j'espère que ça vous sera utile :)
fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
30 mai 2005 à 19:47
je rajouterai le fait de remplacer les events on text qui reagissent a des mots (genre !boisson et compagnie) par un fichier ini, ce qui donne pour l'event on text
on *:TEXT:*:#:{ if ($readini(fichier.ini,section,$1)) { $v1 } }

et puis en cas de repetition (comme pour remplir un dialog avec une serie de mots) d'utiliser des %var avec tokens
Rejoignez-nous