Si X est connu à la compilation, un bon compilateur mettrait le résultat de 7*X directement au lieu d'optimiser la multiplication...
Tout à fait et autant pour moi. Je dois dire que c'était il y a longtemps et je ne me rappelle plus le code. Mais par contre je suis sûr du 7X = 8X-X.
-- Alain
Cyrille
Si X est connu à la compilation, un bon compilateur mettrait le résultat de 7*X directement au lieu d'optimiser la multiplication...
Tout à fait et autant pour moi. Je dois dire que c'était il y a longtemps et je ne me rappelle plus le code. Mais par contre je suis sûr du 7X = 8X-X.
Je vous crois, d'autant que je viens de regarder et VC++ 2005 fait exactement ça pour 7*X (X étant un int):
00401004 lea eax,[ecx*8] 0040100B sub eax,ecx
Pour les histoires de débordements, je crois que simplement, 8*X peut déborder certes, mais que dans ce cas la soustraction par X déborde dans l'autre sens, et on retombe sur nos pieds.
-- C'est ma signature qu'elle est la mieux. Pas la vôtre.
Si X est connu à la compilation, un bon compilateur mettrait le
résultat de 7*X directement au lieu d'optimiser la multiplication...
Tout à fait et autant pour moi.
Je dois dire que c'était il y a longtemps et je ne me rappelle plus le
code. Mais par contre je suis sûr du 7X = 8X-X.
Je vous crois, d'autant que je viens de regarder et VC++ 2005 fait
exactement ça pour 7*X (X étant un int):
00401004 lea eax,[ecx*8]
0040100B sub eax,ecx
Pour les histoires de débordements, je crois que simplement, 8*X peut
déborder certes, mais que dans ce cas la soustraction par X déborde dans
l'autre sens, et on retombe sur nos pieds.
--
C'est ma signature qu'elle est la mieux. Pas la vôtre.
Si X est connu à la compilation, un bon compilateur mettrait le résultat de 7*X directement au lieu d'optimiser la multiplication...
Tout à fait et autant pour moi. Je dois dire que c'était il y a longtemps et je ne me rappelle plus le code. Mais par contre je suis sûr du 7X = 8X-X.
Je vous crois, d'autant que je viens de regarder et VC++ 2005 fait exactement ça pour 7*X (X étant un int):
00401004 lea eax,[ecx*8] 0040100B sub eax,ecx
Pour les histoires de débordements, je crois que simplement, 8*X peut déborder certes, mais que dans ce cas la soustraction par X déborde dans l'autre sens, et on retombe sur nos pieds.
-- C'est ma signature qu'elle est la mieux. Pas la vôtre.
Sylvain
Ploc wrote on 30/07/2006 15:46:
Plus generalement, je serais assez interesse par un bench relatif aux divisions...
<jeux de plage>
0.015 ms pour une division entière de 1024 bits par 128 bits.
</jeux de plage>
Sylvain.
Ploc wrote on 30/07/2006 15:46:
Plus generalement, je serais assez interesse par un bench relatif aux
divisions...
<jeux de plage>
0.015 ms pour une division entière de 1024 bits par 128 bits.