Javap?

flashray

Erfahrenes Mitglied
Hallo,

in einer Aufgabe aus einem Javaeinführungsbuch soll man die class-Dateien zu diesen Klassen mit javap -c *.class untersuchen. Dabei soll zu erkennen sein das die Zuweisung mittels += effizienter arbeitet. Ich kann jedoch bei den Ausgaben keinen Unterschied sehen! Hatte mal jemand mit javap zu tun und wüsste hierzu Bescheid?

Java:
class ZuTest1 {
    public static void main(String[] args) {
	int i = 1;
	i = i + 1;
    }
}


Java:
class ZuTest2 {
    public static void main(String[] args) {
	int i = 1;
	i += 1;
    }
}

Code:
muhabbet@muhabbet-book:/media/hda5/EclipseWorkspace/Workspace/OOE I$ javap -c ZuTest1
Compiled from "ZuTest1.java"
public class ZuTest1 extends java.lang.Object{
public ZuTest1();
  Code:
   0:   aload_0
   1:   invokespecial   #8; //Method java/lang/Object."<init>":()V
   4:   return

public static void main(java.lang.String[]);
  Code:
   0:   iconst_1
   1:   istore_1
   2:   iinc    1, 1
   5:   return

}

muhabbet@muhabbet-book:/media/hda5/EclipseWorkspace/Workspace/OOE I$ javap -c ZuTest2
Compiled from "ZuTest2.java"
public class ZuTest2 extends java.lang.Object{
public ZuTest2();
  Code:
   0:   aload_0
   1:   invokespecial   #8; //Method java/lang/Object."<init>":()V
   4:   return

public static void main(java.lang.String[]);
  Code:
   0:   iconst_1
   1:   istore_1
   2:   iinc    1, 1
   5:   return

}


Vg Erdal
 
Hallo!

Das kommt ganz auf den Compiler an, wie er dieses Konstrukt umsetzt...
Vergleiche doch mal die Ergebnisse des Eclipse Compilers mit der von Javac

Gruß Tom
 
Hallo Tom,

ja mit dem Compiler von Sun gibt es wahrlich Unterschiede.

Da stellt sich mir jetzt die Frage, ob es signifikante Unterschiede zwischen den Compilern gibt. D.h. ob für größere Applikationen der eine oder andere Compiler zu empfehlen wäre - aus bspw. wie in dem Beispiel hier Performancegründen?


Code:
muhabbet@muhabbet-book:/media/hda5/EclipseWorkspace/Workspace/OOE I$ javap -c Zutest1
Compiled from "ZuTest1.java"
public class ZuTest1 extends java.lang.Object{
public ZuTest1();
  Code:
   0:   aload_0
   1:   invokespecial   #1; //Method java/lang/Object."<init>":()V
   4:   return

public static void main(java.lang.String[]);
  Code:
   0:   iconst_1
   1:   istore_1
   2:   iload_1
   3:   iconst_1
   4:   iadd
   5:   istore_1
   6:   return

}

muhabbet@muhabbet-book:/media/hda5/EclipseWorkspace/Workspace/OOE I$ javap -c Zutest2
Compiled from "ZuTest2.java"
public class ZuTest2 extends java.lang.Object{
public ZuTest2();
  Code:
   0:   aload_0
   1:   invokespecial   #1; //Method java/lang/Object."<init>":()V
   4:   return

public static void main(java.lang.String[]);
  Code:
   0:   iconst_1
   1:   istore_1
   2:   iinc    1, 1
   5:   return

}


Vg Erdal
 
Zurück