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

Andras Suller suller.andras at gmail.com
2009. Feb. 9., H, 14:23:17 CET


biziclop <biziclop at gmail.com> írta (2009. február 9. 11:41):
> 2009/2/9 Andras Suller <suller.andras at gmail.com>:
>> Varjasi Norbert <varjasin at sze.hu> írta (2009. február 8. 22:12):
>>> 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);
>>>        }
>>> }
>>
>> Mivel a muvelet felhasználja az i értékét, így a két megoldás
>> szerintem nem ekvivalens. Optimalizáláskor nem biztos, hogy az egyiket
>> a másikba át lehet alakítani, ez feladatfüggő. Már csak azért is, mert
>> az i értékkészlete a két függvény esetén nem ugyanaz :)
>>
>> psmith
>
> Szerintem viszonylag jogosan elvarhato, hogy ha a ket kod pontosan
> ugyanazt csinalja, akkor ugyanaz legyen a bytecode-ja is. (Tekintve
> hogy rendkivul egyszeru esetrol van szo.)

Ezzel egyetértek. De ez a fenti két példakódra már alapból nem igaz,
mivel nem ugyanazt csinálják.

> Es megforditva: ha kulonbozo bytecode-ot akarsz latni, akkor ugy kell
> hasznalnod a ket operatort, hogy kulonbozo mukodest vonjon maga utan.
>
> Vagy csak en vagyok ennyire egyszeru?

Én nem említettem se operátorokat, se bytekódot, csak arra hívtam fel
a figyelmet, hogy a két kódrészlet nem ekvivalens egymással.

psmith


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