Bonjour Luc Hermitte,
Je vais un peu pinailler.
Cet exemple n'est pas complet. Le code a - (a/b) * b n'a jamais été intéressant. Dès le départ, la division (monde Intel) donnait le quotient et le reste (le modulo) dans des registres différents. Alors a % b générait 1 division tandis que a - (a/b) * b demandait 1 division, 1 multiplication et 1 soustraction.
En revanche, le code q = a / b; r = a % b; (alors 2 divisions) était effectivement remplacé par q = a/b; r = a - q*b (1 division, 1 multiplication et 1 soustraction - intéressant car la division est beaucoup plus coûteuse que la multiplication). Aujourd'hui, pour peu que les calculs de q et r ne soient pas trop distants l'un de l'autre, ces deux instructions ne génèrent que 1 division dont elles se partagent les résultats. Utiliser DivMod évite de prendre le risque de perdre cette optimisation du compilateur.
Salut








Répondre avec citation





Partager