[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