sans utilisé de SSE, c'est le code le plus rapide que j'arrive à faire. Je triche un peu avec le v[16] comme prefetch.
```
size_t find_int_c_unrolled_8(const int k, const int* v, size_t n)
{
size_t i = 0;
int t=0;
for (; n - i >= 8; i += 8,v+=8)
{
t |= v[16];
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;
}
volatile int tt =t;
for (; i != n; i++,v++)
if (v[0] == k)
return i;
# 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é à 4.
sans utilisé de SSE, c'est le code le plus rapide que j'arrive à faire. Je triche un peu avec le v[16] comme prefetch.
```
size_t find_int_c_unrolled_8(const int k, const int* v, size_t n)
{
size_t i = 0;
int t=0;
for (; n - i >= 8; i += 8,v+=8)
{
t |= v[16];
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;
}
volatile int tt =t;
for (; i != n; i++,v++)
if (v[0] == k)
return i;
return n;
}
```
"La première sécurité est la liberté"