On Fri, 30 Aug 2002, Daniel Cordey wrote:
> On Thursday 29 August 2002 19:32, Ivo Bloechliger wrote:
>
> > >for (i = 0; i < 16; ++i) {
> > > r += w % 2 ; // on accumule le reste de la division entiere par deux
> > > w = w / 2; // division entiere */
>
> Sauf erreur, le compilateur est capable de d�tecter une
> division/multiplication par une constante puissance de 2, et de transformer
> cette op�ration en bit-shift �quivalent. Ce qui fait que :
>
> w = w / 2;
>
> est en fait transformer en �quivalent :
>
> w >>=1;
>
> C'est donc particuli�rement rapide. Par contre je pense qu'�crire :
>
> r += w & 1;
>
> devrait �tre plus rapide q'une op�ration de modulo :
>
> r += w % 2 ;
>
> Seul le r�sultat du bench nous dira si la t�orie se confirme :-)
>
> Ce genre de code devrait �tre optimis� de mani�re impressionnante sur un
> processeur Itanium (sous Linux avec gcc ou HP-UX, pas W* !)
>
> Daniel
Puisque la discution persiste malgr� le lien sugg�r� pas Ivo,
qui propose une technique math�matiquement tr�s int�ressante,
j'aimerai poser une question aux sp�cialiste du C:
Si on tourne dans l'autre sens ( x2 au lieu de /2 ) alors on doit pouvoir
se contenter d'additionner le bit de retenue (si tant est que cette notion
existe en C, vieux souvenir d'assembleur;)
--
F�lix Hauri - <[EMAIL PROTECTED]> - http://www.f-hauri.ch
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se d�sabonner aussi.