有没有办法评估/衡量java中的代码效率

时间:2014-11-19 13:57:19

标签: java

例如,我有一个简单的计数循环的两个版本 - 两者都实现了相同的功能,但一个更有效(并且可能使用更少的内存)比另一个。见下文:

代码1:

int num;
for (num =0; num<10; num++){
System.out.println(num);
}

代码2:

for (int num=0; num<10; num++){
System.out.println(num);
}

1 个答案:

答案 0 :(得分:3)

它们编译相同,因此具有相同的性能和内存要求。

为了证明使用javap -c <classfile>

查看编译的java字节代码

代码:

public static void a() {
    for (int num = 0; num < 10; num++) {
        System.out.println(num);
    }
}

public static void b() {
    int num;
    for (num = 0; num < 10; num++) {
        System.out.println(num);
    }
}

字节代码:

public static void a();
Code:
   0: iconst_0      
   1: istore_0      
   2: goto          15
   5: getstatic     #15                 // Field java/lang/System.out:Ljava/io/PrintStream;
   8: iload_0       
   9: invokevirtual #21                 // Method java/io/PrintStream.println:(I)V
  12: iinc          0, 1
  15: iload_0       
  16: bipush        10
  18: if_icmplt     5
  21: return        

public static void b();
Code:
   0: iconst_0      
   1: istore_0      
   2: goto          15
   5: getstatic     #15                 // Field java/lang/System.out:Ljava/io/PrintStream;
   8: iload_0       
   9: invokevirtual #21                 // Method java/io/PrintStream.println:(I)V
  12: iinc          0, 1
  15: iload_0       
  16: bipush        10
  18: if_icmplt     5
  21: return