[ zarkocgyus @ 11.05.2008. 16:17 ] @
Cao svima imam sledece pitanje da li se for petja u prvom primeru izvrsava brze ili je to isto?

Code:
class some_class
{
public:
        int x[50];
        int y[50];
};

void some_function()
{
 some_class instance;
 for (int i=0;i<50; i++)
      {
        instance.x[i]=i;
        instance.y[i]=i;
      }
}

ili

void some_function()
{
 some_class instance;

for (int i=0;i<50; i++)
        instance.x=i;

for (int i=0;i<50; i++)
        instance.y=i;

}



Pozdrav.
Hvala.
[ X Files @ 11.05.2008. 17:59 ] @
Pogledaj recimo link Optimization of Computer Programs in C i prouci sekciju LOOP UNROLLING.

Otprilike isto to bi mogao i sam da uradis rucno (ako kompajler nije dovoljno inteligentan i sam ne sredi to isto za tebe). Poenta je da se postigne sto manje ispitivanja "da li je dosegnut uslov za kraj petlje" i da se umesto toga ide na lineran kod. To ce neznatno uvecati kod ali i brzinu.

Teoretski, prvi kod ce biti brzi jer ima samo jedno uvodenje "i" na steku i upola manje ispitivanja kraja petlje.

P.S.
Zaboravio si "indeks od i" u drugom primeru.

EDIT:
http://en.wikipedia.org/wiki/Loop_unrolling


[Ovu poruku je menjao X Files dana 11.05.2008. u 19:28 GMT+1]
[ zarkocgyus @ 11.05.2008. 19:45 ] @
Ok hvala, sad mi je dosta jasnije.
Hvala.