L'optimisation

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.

ABCalcul
11A=B
22A=B
33A=B
46A+2=B
57A+2=B
68A+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é.


<<< Revenir au cours précédent Continuer le cours >>>

Licence Creative Commons
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.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2018 | Il y a 72 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire indépendant, géré bénévolement et n'est donc pas affilié à Casio | Toute reproduction de Planète Casio, même partielle, est interdite
Les fichiers, programmes et autres publications présents sur Planète Casio restent la propriété de leurs auteurs respectifs et peuvent être soumis à des licences ou des copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd