__builtin_prefetch, Combien lit-il?

Je suis en train d'optimiser certains RK4 GCC C++ code à l'aide de

__builtin_prefetch

J'ai un peu de mal à essayer de comprendre comment extraire un ensemble de la classe. Je ne comprends pas comment une grande partie de la const void *addr est lu. Alors que j'ai les prochaines valeurs de from et to chargé.

for (int i = from; i < to; i++)
{
    double kv = myLinks[i].kv;
    particle* from = con[i].Pfrom;
    particle* to = con[i].Pto;
    //Prefetch values at con[i++].Pfrom & con[i].Pto;
    double pos = to->px- from->px;
    double delta = from->r + to->r - pos;
    double k1 = axcel(kv, delta, from->mass) * dt; //axcel is an inlined function
    double k2 = axcel(kv, delta + 0.5 * k1, from->mass) * dt;
    double k3 = axcel(kv, delta + 0.5 * k2, from->mass) * dt;
    double k4 = axcel(kv, delta + k3, from->mass) * dt;
    #define likely(x)       __builtin_expect((x),1)
    if (likely(!from->bc))
    {
            from->x += (( k1 + 2 * k2 + 2 * k3 + k4) / 6);
    }
}

Lien: http://www.ibm.com/developerworks/linux/library/l-gcc-hacks/

source d'informationauteur Mikhail