XII - L'optimisation
L'optimisation consiste d'une part à rendre le programme plus rapide en diminuant le nombre de calculs et en jouant avec les performances des fonctions, et d'autres part, à économiser de la mémoire. Ces deux cas sont importants, surtout quand on programme sur une calculatrice qui dispose de ressources limitées, tant en puissance qu'en mémoire.
Nous commencerons par l'optimisation de la mémoire car ce sont des astuces et règles élémentaires à appliquer systématiquement à tous vos programmes.
Supprimez tous les caractères facultatifs
Ne fermez jamais vos parenthèses, crochets et accolades en fin de ligne ou avant la fonction =>. Ils sont facultatifs. Par exemple :
List 1[5] [i]devient[/i] List 1[5
1=List 1[5]=>"HELLO" [i]devient[/i] 1=List 1[5=>"HELLO"
If Mat A[12,A+2(B+3)] [i]devient[/i] If Mat[12,A+2(B+3
Sauf avec les fonctions Str pour lesquelles il faut fermer la parenthèse (l'uniformisation de la sématique du Basic Casio est à revoir...).
Dans la même veine, supprimez tous les signes de multiplication. Remplacez aussi les divisions par une multiplication quand un gain en mémoire s'opère.
2*A [i]devient[/i] 2A
2*(A+3) [i]devient[/i] 2*(A+3 ou 2A+6
A/10 [i]devient[/i] .1A
A/100 [i]devient[/i] .01A
2(A+3)/100 [i]devient[/i] .02(A+3
Usez des booléens
Nous allons prendre un cas précis pour expliquer cette astuce d'optimisation. Selon le tableau ci-dessous, on doit trouver une équation pour obtenir la valeur de B en fonction de A.
A | B | Calcul |
1 | 1 | A=B |
2 | 2 | A=B |
3 | 3 | A=B |
4 | 6 | A+2=B |
5 | 7 | A+2=B |
6 | 8 | A+2=B |
On constate qu'entre 1 et 3, les variables A et B sont égales (B = A). Mais à partir de A = 4, il y a rupture car B = A + 2. On serait alors tenté d'écrire ceci pour calculer la valeur de B en fonction de A :
A->B
A>=4=>B+2->B
Je suis d'accord, le code est court et ne tient sur deux lignes. Ce n'est pas la mer à boire, mais quand on peut optimiser davantage le code, pourquoi s'en priver ? Vous vous rappelez des booléens, j'en parlais dans la réalisation du morpion : quand la condition est vraie, elle renvoie 1, sinon elle renvoie 0. Nous allons donc jouer avec cette caractéristique. En une seule ligne, on obtient le code suivant :
A+2(A>=4->B
Conclusion
C'est tout sur l'optimisation ? En effet, une liste exhaustive est impossible car elle ne serait pas représentative de la diversité des situations rencontrées en programmation. Vous devez vous adapter en fonction de votre programme et des connaissances en Basic Casio, et ainsi faire preuve d'ingéniosité pour réaliser le code le plus optimisé.
Ce cours est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 France.
|