[Java lista] for: ++i vagy i++

Varjasi Norbert varjasin at sze.hu
2009. Feb. 8., V, 22:12:29 CET


>
>> Szerintem meg gondolkozzon rajta a fordító.
>>     
> Ha mindig a fordító gondolkozna, akkor félművelt programozók is 
> elegendőek lennének ;)
>
> Bizonnyára van eset (természetesen jól összetett, amit a kolléga 
> részletezett), amikor már nem csak optimalizálás, hanem komoly működési 
> különbség van a prefix és postfix között... szóval ebben a szakmában egy 
> darabig még kell a szürkeállomány is ;)
>
> Ettől függetlenül, szerintem ma már minden fordító van olyan okos, hogy 
> kioptimalizál ilyesmit, szóval csak azért nem kell programozási stílust 
> váltani ;)

Ha már optimalizálni szeretnénk, akkor egy újabb adalék, amelyet 
nevezhetnénk a beágyazott programozók kedvenc ciklusának is:
i++, vagy i-- ?
Kérdés miért jobb a t2-es hívás, mint a t1? (Iterációnként legalább egy 
belső hívással.)
void t1(int n){
        for (int i=0; i<n; i++){
            muvelet(i);
        }   
    }
void t2(int n){
        for (int i=n; i>0; i--){
            muvelet(i);
        }
}
Megj:  n jöhet paraméterből vagy kaphat értéket a műveleten belül is, 
ebből a szempontból lényegtelen.

Válasz: azért gyorsabb, mert  t1-ben folyamatosan n-hez kell hasonlítani 
és ez iterációnként  legalább egy plusz kiértékelés. Ha n kellően nagy, 
akkor már számottevő a különbség, és van ahol számít!
üdv: Varjasi Norbert



További információk a(z) Javalist levelezőlistáról