|
Tutoriel rédigé le : 2014-04-30 20:59 par Positon Catégorie : Basic Casio Calculatrice : Toutes
Discutez de ce tutoriel sur le forum >> Voir le sujet dédié (37 commentaires) Se passer des opérateurs logiques Bonjour à tous, je me suis rendu compte que l'on pouvait se passer de And, Or, Not et Xor... en les remplaçant par des signes arithmétiques !
Cela se fait tout simplement grâce aux conditions booléennes. Pour ceux qui ne le savent pas, une condition est considérée comme étant un nombre, et vaut 1 si elle est vraie et 0 si elle est fausse.
Ainsi, si l'on considère deux conditions A et B :
A Or B
A And B
A Xor B
Not A équivalent respectivement à :A+B
A*B
A-B
1-A
Et quel serait l'intérêt d'utiliser cette méthode alors ? Et bien c'est plus rapide : j'ai fais quelques tests imprécis à l'arrache et les opérateurs arithmétiques sont environ 33% plus rapide. Je pense que je vais en faire d'autres pour préciser ces chiffres.
En revanche il y a des défauts. Outre le fait que ça nuit à la compréhension du code, cette méthode est en effet plus volumineuse en terme de taille, et ce à cause des parenthèse. Ces dernières sont indispensables, regardez l'exemple suivant par exemple :
(A=1) + (C>3)
En revanche, les conditions avec Not n'en requièrent pas, ce qui ne donne non pas une perte mais un gain de place :
Not A + Not B
Conclusion :
Remplacer des opérateurs logiques par des opérateurs arithmétiques ne sert à rien si vous voulez réduire la taille de votre programme. En revanche, ils peuvent vous permettre d'accélérer ce dernier en réduisant le temps d'exécution de certaines boucles (notamment les petites, puisque la condition y est vérifiée plus fréquemment). Pour finir, cette méthode peut constituer une astuce d'optimisation systématique avec les conditions qui n'utilisent pas de =,≠,<,>,≤ ou ≥, car elle confère un gain de place et de temps.
Bref, l'idée est à creuser. Quoi qu'il en soit, n'oubliez pas que ça reste de la micro-optimisation Discutez de ce tutoriel sur le forum >> Voir le sujet dédié (37 commentaires)
|
|