2 votes

Comment imposer le commoning prédictif à gcc pour effectuer un calcul en réutilisant les données.

Selon un vieille lame sobre predictive commoning on peut dire que

test1.cpp

for(int i=0; i < n; i++)
    f[i]= a[i]*exp(i+1)+a[i+1]*exp(i+2);

est équivalent à

test2.cpp

double p0=a[0]*exp(1);
int i;
for (i=0; i < n-n%2; i+=2)
{
    double p1=a[i+1]*exp(i+2);
    f[i] = p0+p1;
    p0=a[i+2]*exp(i+3);
    f[i+1] = p1+p0;
}
for (; i < n; i++)
    f[i] = a[i]*exp(i+1)+a[i+1]*exp(i+2);

sauf que le second code est plus optimisé ( Point de repère ).

J'ai testé gcc avec le niveau d'optimisation le plus élevé -O3 et pourtant je ne vois pas gcc en effectuant cette optimisation.

(Encore pire ces deux exemples A y B )

Comment puis-je forcer gcc pour effectuer une telle optimisation ?

0voto

scooter me fecit Points 730

Je n'ai pas trouvé où un quelconque niveau d'optimisation active -fpredictive-commoning . Il semble que vous deviez l'activer manuellement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X