• # + d'infos...

    Posté par (site web personnel) . En réponse au journal Optimisation de code C. Évalué à 2.

    Tu pourrais donner plus d'info sur la taille de a et b ?

    Si c'est "moyen gros", tu peux essayer un bloc prefetch.

    genre rajouter :
    for(i=0; i < n; i += 16)
    {
    dummy1 += a[i]; dummy2 += b[i];
    }

    devant la 1er boucle mais vu que tu n'y fais pas grand chose peut-être que mixer la chose pourrais faire gagner du temps :

    for(i=0; i < (n/4)*4 ; i += 4){ // les prefetcher automatiques n'aiment pas les adresses descendantes

    dummy1 += a[j=(j+16) mod n]; dummy2 += b[j];
    res1+=a[i] * b[i];
    res2+=a[i+1] * b[i+1];
    res3+=a[i+2] * b[i+2];
    res4 +=a[i+3] * b[i+3];
    }
    res += res1 + res2 + res3 +res4;

    A coder en SSE si tu veux t'amuser (déroulant la boucle pareil !).

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