• [^] # Re: le plus rapide en code simple

    Posté par (site web personnel) . En réponse au journal Recherche de valeur dans un tableau et l'écosystème des compilateurs C++. Évalué à 5.

    Je n'arrive pas à faire mieux. __builtin_prefetch(v+256,0,0) qui est le prefetchnta n'est pas plus rapide.

     size_t find_int_c_unrolled_8(const int k, const int* v, size_t n)
     {
     size_t i = 0;
     for (; n - i >= 8; i += 8,v+=8)
     {
     __builtin_prefetch(v+256); //54/148
     if (v[0] == k) return i;
     if (v[1] == k) return i + 1;
     if (v[2] == k) return i + 2;
     if (v[3] == k) return i + 3;
     if (v[4] == k) return i + 4;
     if (v[5] == k) return i + 5;
     if (v[6] == k) return i + 6;
     if (v[7] == k) return i + 7;
     }
     for (; i != n; i++,v++)
     if (v[0] == k)
     return i;
     return n;
     }
    

    "La première sécurité est la liberté"