Java:计数这么快?

时间:2019-02-24 10:35:31

标签: java

我的PC中的这段代码在Java中执行了1秒钟,而在C语言中执行了超过20秒钟。Java的性能如何?

int a[] = new int[50000] ; 
for(int i = 0 ; i < 50000 ; i++) { 
    for(int j = 0 ; j < 200000 ; j++) a[i] = j - i ;
}

1 个答案:

答案 0 :(得分:1)

Java看到您的代码没有执行任何操作,并对其进行了优化以使其更快地执行操作(如注释所示)。当我按原样运行代码时,它将在0.33秒内完成。通过此简单的更改,需要17秒:

public class Test {
    public static volatile int b;

    public static void main(String[] args) {
        int a[] = new int[50000] ; 
        for(int i = 0 ; i < 50000 ; i++) { 
            for(int j = 0 ; j < 200000 ; j++) {
                a[i] = j - i ;
                b = a[i];
            }
        }
    }
}

由于b易变,运行时不再能优化未使用的分配。在我看来,微基准测试几乎没有用,因为实际结果取决于许多不同的事物,但是了解JVM的工作原理总是很不错的!