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.

Répondre à