Regruparea calculelor este o modalitate de a reduce numărul ciclurilor mașină. În secvența:
s1=0;
for(i=0;i <n; i++) s1+=x[i];
s2=0;
for(i=0;i <n; i++) s2+=x[i]*x[i];
s3=0;
for(i=0;i <n; i++) s3+=x[i]*x[i]+x[i];
sxy=0;
for(i=0;i <n; i++) sxy+=x[i]*y[i];
prin regruparea intr-o singura structura repetitiva, devine:
s1=0;
s2=0;
s3=0;
sxy=0;
for(i=0;i <n; i++)
{
s1+=x[i];
s2+=x[i]*x[i];
s3+=x[i]*x[i]+x[i];
sxy+=x[i]*y[i];
}
Dacă numărul de cicluri variază se vor găsi modalități de a face ceea ce trebuie și de a rezolva problema.
Dacă se consideră secvența:
s1=0;
for(i=0;i <n; i++) s1+=x[i];
s2=0;
for(i=0;i <m; i++) s2+=x[i]*x[i];
și dacă m= n+2, atunci sevența inițială prin optimizare devine;
s1=0;
s2=0;
for(i=0;i <n; i++)
{
s1+=x[i];
s2+=x[i]*x[i];
}
s2+=x[n]*x[n] + x[n+1]*x[n+1] ;
și se vede că se țin sub control numărul de repetări ale instrucțiunii for() care apare o singură dată, ceea ce la o analiză atentă este un lucru benefic. Regruparea de calcule presupune ca secvențele să fie independente între ele, ceea ce se întâlnește destul de des în programe.
s1=0;
for(i=0;i <n; i++) s1+=x[i];
s2=0;
for(i=0;i <n; i++) s2+=x[i]*x[i];
s3=0;
for(i=0;i <n; i++) s3+=x[i]*x[i]+x[i];
sxy=0;
for(i=0;i <n; i++) sxy+=x[i]*y[i];
prin regruparea intr-o singura structura repetitiva, devine:
s1=0;
s2=0;
s3=0;
sxy=0;
for(i=0;i <n; i++)
{
s1+=x[i];
s2+=x[i]*x[i];
s3+=x[i]*x[i]+x[i];
sxy+=x[i]*y[i];
}
Dacă numărul de cicluri variază se vor găsi modalități de a face ceea ce trebuie și de a rezolva problema.
Dacă se consideră secvența:
s1=0;
for(i=0;i <n; i++) s1+=x[i];
s2=0;
for(i=0;i <m; i++) s2+=x[i]*x[i];
și dacă m= n+2, atunci sevența inițială prin optimizare devine;
s1=0;
s2=0;
for(i=0;i <n; i++)
{
s1+=x[i];
s2+=x[i]*x[i];
}
s2+=x[n]*x[n] + x[n+1]*x[n+1] ;
și se vede că se țin sub control numărul de repetări ale instrucțiunii for() care apare o singură dată, ceea ce la o analiză atentă este un lucru benefic. Regruparea de calcule presupune ca secvențele să fie independente între ele, ceea ce se întâlnește destul de des în programe.
(023 decembrie 2017)
No comments:
Post a Comment