比较逻辑上类似的"for循环"

mah*_*esh 12 java

我遇到了两个for循环的简单java程序.问题是这些for循环是否需要相同的时间来执行,或者首先执行的速度会比第二个更快.

以下是计划:

public static void main(String[] args) {

        Long t1 = System.currentTimeMillis();
        for (int i = 999; i > 0; i--) {
            System.out.println(i);
        }
        t1 = System.currentTimeMillis() - t1;
        Long t2 = System.currentTimeMillis();
        for (int j = 0; j < 999; j++) {
            System.out.println(j);
        }
        t2 = System.currentTimeMillis() - t2;

        System.out.println("for loop1 time : " + t1);
        System.out.println("for loop2 time : " + t2);
    }
Run Code Online (Sandbox Code Playgroud)

执行此操作后,我发现第一个for循环比第二个花费更多时间.但是在交换位置之后,结果与先前写入的循环相同,总是花费比另一个更多的时间.我对结果感到非常惊讶.请有人告诉我上面的程序是如何工作的.

Oli*_*rth 13

任何循环所花费的时间将由I/O(即打印到屏幕)支配,这是高度可变的.我不认为你可以从你的例子中学到很多东西.


Joh*_*erg 6

第一个循环将在内存中分配1000个字符串,而第二个循环,无论是否向前工作,都可以使用已经预先分配的对象.

虽然合作System.out.println,但任何分配都应该可以忽略计.