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

标签 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);
}

最佳答案

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

使用 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        

关于java - 有没有办法评估/衡量Java代码的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27018673/

相关文章:

java - URL获取参数的问题

java - 创建一个可以返回两个不同事物的方法

java - 未找到 onClick 方法

java - 删除类(class)时无法删除时段

java - 使用 Java 中的自定义对象实现将 XML 解析为 DOM 树

java - 如何构建包含外部.jar依赖项的.jar?

java - 如何避免基元的计算错误

Java正则表达式模式来匹配单词或短语

Java:在线程化时更改标签值

java - Java 1.8 堆栈溢出错误