为什么Java编译器如此快速地工作?

时间:2016-12-11 12:47:05

标签: java

我的代码很小。我不知道为什么Java编译器如此快速地工作。

这是代码:

int a= 0;
    while(true) {
        a++;
        if(a==0) break;
    }
    System.out.println(a);

如果我将println置于while循环中,则会逐行逐行打印。

int a= 0;
    while(true) {
        a++;
        if(a==0) break;
        System.out.println(a);
    }

我的问题是:Java的机制如何使它如此快速地工作(在例1中)?

3 个答案:

答案 0 :(得分:2)

与纯计算时相比,System.out.println非常慢。第一个例子只是点击中断,println被调用一次,而你的第二个例子在每个周期都有一个println。

答案 1 :(得分:1)

在这两种情况下,编译器都会花费相同的时间来检查条件,但是在示例1中,您已经编写了一个额外的行,并且您必须在控制台上打印一些内容。 System.out.println是一项昂贵的操作。 它的System.out.println语句花费时间不用于检查条件。

答案 2 :(得分:0)

写入控制台是昂贵的,显示它甚至更昂贵。每个系统调用比操作谎言a++贵1000倍,并且实际更新屏幕是>再费10倍。

JIT可以丢弃一个不做任何事情的循环。