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;
}
[^] # Re: le plus rapide en code simple
Posté par Nicolas Boulay (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.
"La première sécurité est la liberté"