[Java lista] for: ++i vagy i++?
Richard Oliver Legendi
roante at freemail.hu
2009. Feb. 6., P, 12:01:01 CET
Sziasztok!
Észrevettem egy fura dolgot a for kapcsán. C++-ből még rémlett, hogy
'hatékonyabb' for esetén a ++i használata, mint az i++ (kemény 2
opcode-dal :-) ), és reflexből ezt használtam már X éve Javaban is. Nem
biztos, hogy ez igaz is, de ezt hallottam, és elhittem :-)
Most gondoltam megnézem, mi is ennek a hitemnek az alapja.
Írtam egy ilyen osztályt:
public class ForTest {
void test1() {
for (int i=0; i<10; ++i) {
System.out.println(i);
}
}
void test2() {
for (int i=0; i<10; i++) {
System.out.println(i);
}
}
}
Lefordítottam, és javap-pal visszafejtve azt tapasztaltam, hogy mind a
két függvény ugyanarra a kódra fordul:
void test1();
Signature: ()V
Code:
0: iconst_0
1: istore_1
2: iload_1
3: bipush 10
5: if_icmpge 21
8: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
11: iload_1
12: invokevirtual #3; //Method java/io/PrintStream.println:(I)V
15: iinc 1, 1
18: goto 2
21: return
void test2();
Signature: ()V
Code:
0: iconst_0
1: istore_1
2: iload_1
3: bipush 10
5: if_icmpge 21
8: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
11: iload_1
12: invokevirtual #3; //Method java/io/PrintStream.println:(I)V
15: iinc 1, 1
18: goto 2
21: return
Kioptimalizálja a fordító gondolom.
Ezek szerint tök mindegy, hogy ++i vagy i++?
Ricsi
További információk a(z) Javalist levelezőlistáról