2014-11-19 3 views
1

например, у меня есть две версии простого цикла счета - оба достигают того же, но один более эффективен (и, по-видимому, использует меньше памяти), чем другой , Смотри ниже:Есть ли способ оценить/измерить эффективность кода в 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); 
} 
+2

Второй один лучше. –

+0

@ Джойнер лучше производительность и память печать, как ОП спросил? – weston

+0

@weston Это более читаемо. –

ответ

3

Они составляют тождественно и поэтому имеют одинаковые требования к производительности и памяти.

Для доказательства взглянуть на скомпилированный Java байт-код с помощью javap -c <classfile>

Код:

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   
+0

+1 для байт-кода как доказательство. –

Смежные вопросы