je cherche à ecrire en C une routine optimisée pour calculer un produit scalaire de deux vecteurs (de taille variable). Comme cette routine sera appelée plusieurs milliers (millions) de fois, je cherche à gagner le moindre cycle processeurs. Ma plate-forme est un athlon-XP (sans SSE2 donc). Pour l'instant j'ai 2 variantes:
C-pure:
double dot(const double *a, const double *b, unsigned long n)
{
register double res=0.0;
register unsigned long i;
for(i=(n/4)*4; i != 0; i -= 4)
{
register (…)