LINUX.ORG.RU

История изменений

Исправление InterVi, (текущая версия) :

Затестил джаву:

public class Main {
    public static void test() {
        long time = System.nanoTime();
        for (int i = 0; i < 1000000000; i++);
        System.out.println("i++ " + String.valueOf(System.nanoTime() - time));
    }

    public static void test2() {
        long time = System.nanoTime();
        for (int i = 0; i < 1000000000; ++i);
        System.out.println("++i " + String.valueOf(System.nanoTime() - time));
    }

    public static void main(String[] args) {
        //for (int i = 0; i < 10; i++) Main.test();
        for (int i = 0; i < 10; i++) Main.test2();
    }
}

i++ быстрее на старте, ++i быстрее после JIT:

[alex@hard java]$ java Test.java
i++ 4067508
i++ 29474921
i++ 143944
i++ 143664
i++ 130046
i++ 86813
i++ 95892
i++ 90514
i++ 94636
i++ 113353
[alex@hard java]$ java Test.java
i++ 3145249
i++ 7670708
i++ 83111
i++ 79200
i++ 88699
i++ 79130
i++ 84788
i++ 75568
i++ 74660
i++ 86953
[alex@hard java]$ java Test.java
i++ 3642102
i++ 28233416
i++ 70540
i++ 68445
i++ 67676
i++ 65022
i++ 64883
i++ 67537
i++ 82413
i++ 63696

[alex@hard java]$ java Test.java
++i 6875351
++i 44606952
++i 75988
++i 62718
++i 63905
++i 69912
++i 75290
++i 72496
++i 74032
++i 74172
[alex@hard java]$ java Test.java
++i 5049202
++i 6004147
++i 72985
++i 64324
++i 65791
++i 64883
++i 64324
++i 62019
++i 66140
++i 74312
[alex@hard java]$ java Test.java
++i 9412000
++i 1397
++i 15749989
++i 20603
++i 20603
++i 21232
++i 21930
++i 21931
++i 21930
++i 22349

И на всякий случай считал новое время в переменную после цикла, чтобы преобразование и конкатация не влияли. Результат примерно тот же:

[alex@hard java]$ java Test.java
i++ 4541611
i++ 7834555
i++ 65719
i++ 61529
i++ 66906
i++ 69840
i++ 67745
i++ 69560
i++ 64881
i++ 65789
[alex@hard java]$ java Test.java
i++ 8016495
i++ 12321073
i++ 69630
i++ 65859
i++ 66558
i++ 61040
i++ 62157
i++ 65371
i++ 67535
i++ 63345

[alex@hard java]$ java Test.java
++i 5719419
++i 11528512
++i 80177
++i 75148
++i 70608
++i 88627
++i 67675
++i 67675
++i 65370
++i 65790
[alex@hard java]$ java Test.java
++i 10049368
++i 6999659
++i 81922
++i 76964
++i 75707
++i 73332
++i 81503
++i 77313
++i 76126
++i 76824

версия:

[alex@hard java]$ java --version
openjdk 11.0.11 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9)
OpenJDK 64-Bit Server VM (build 11.0.11+9, mixed mode)

Исправление InterVi, :

Затестил джаву:

public class Main {
    public static void test() {
        long time = System.nanoTime();
        for (int i = 0; i < 1000000000; i++);
        System.out.println("i++ " + String.valueOf(System.nanoTime() - time));
    }

    public static void test2() {
        long time = System.nanoTime();
        for (int i = 0; i < 1000000000; ++i);
        System.out.println("++i " + String.valueOf(System.nanoTime() - time));
    }

    public static void main(String[] args) {
        //for (int i = 0; i < 10; i++) Main.test();
        for (int i = 0; i < 10; i++) Main.test2();
    }
}

i++ быстрее на старте, ++i быстрее после JIT:

[alex@hard java]$ java Test.java
i++ 4067508
i++ 29474921
i++ 143944
i++ 143664
i++ 130046
i++ 86813
i++ 95892
i++ 90514
i++ 94636
i++ 113353
[alex@hard java]$ java Test.java
i++ 3145249
i++ 7670708
i++ 83111
i++ 79200
i++ 88699
i++ 79130
i++ 84788
i++ 75568
i++ 74660
i++ 86953
[alex@hard java]$ java Test.java
i++ 3642102
i++ 28233416
i++ 70540
i++ 68445
i++ 67676
i++ 65022
i++ 64883
i++ 67537
i++ 82413
i++ 63696

[alex@hard java]$ java Test.java
++i 6875351
++i 44606952
++i 75988
++i 62718
++i 63905
++i 69912
++i 75290
++i 72496
++i 74032
++i 74172
[alex@hard java]$ java Test.java
++i 5049202
++i 6004147
++i 72985
++i 64324
++i 65791
++i 64883
++i 64324
++i 62019
++i 66140
++i 74312
[alex@hard java]$ java Test.java
++i 9412000
++i 1397
++i 15749989
++i 20603
++i 20603
++i 21232
++i 21930
++i 21931
++i 21930
++i 22349

И на всякий случай считал новое время в переменную после цикла, чтобы преобразование и конкатация не влияли. Результат примерно тот же:

[alex@hard java]$ java Test.java
i++ 4541611
i++ 7834555
i++ 65719
i++ 61529
i++ 66906
i++ 69840
i++ 67745
i++ 69560
i++ 64881
i++ 65789
[alex@hard java]$ java Test.java
i++ 8016495
i++ 12321073
i++ 69630
i++ 65859
i++ 66558
i++ 61040
i++ 62157
i++ 65371
i++ 67535
i++ 63345

версия:

[alex@hard java]$ java --version
openjdk 11.0.11 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9)
OpenJDK 64-Bit Server VM (build 11.0.11+9, mixed mode)

Исправление InterVi, :

Затестил джаву:

public class Main {
    public static void test() {
        long time = System.nanoTime();
        for (int i = 0; i < 1000000000; i++);
        System.out.println("i++ " + String.valueOf(System.nanoTime() - time));
    }

    public static void test2() {
        long time = System.nanoTime();
        for (int i = 0; i < 1000000000; ++i);
        System.out.println("++i " + String.valueOf(System.nanoTime() - time));
    }

    public static void main(String[] args) {
        //for (int i = 0; i < 10; i++) Main.test();
        for (int i = 0; i < 10; i++) Main.test2();
    }
}

i++ быстрее на старте, ++i быстрее после JIT:

[alex@hard java]$ java Test.java
i++ 4067508
i++ 29474921
i++ 143944
i++ 143664
i++ 130046
i++ 86813
i++ 95892
i++ 90514
i++ 94636
i++ 113353
[alex@hard java]$ java Test.java
i++ 3145249
i++ 7670708
i++ 83111
i++ 79200
i++ 88699
i++ 79130
i++ 84788
i++ 75568
i++ 74660
i++ 86953
[alex@hard java]$ java Test.java
i++ 3642102
i++ 28233416
i++ 70540
i++ 68445
i++ 67676
i++ 65022
i++ 64883
i++ 67537
i++ 82413
i++ 63696

[alex@hard java]$ java Test.java
++i 6875351
++i 44606952
++i 75988
++i 62718
++i 63905
++i 69912
++i 75290
++i 72496
++i 74032
++i 74172
[alex@hard java]$ java Test.java
++i 5049202
++i 6004147
++i 72985
++i 64324
++i 65791
++i 64883
++i 64324
++i 62019
++i 66140
++i 74312
[alex@hard java]$ java Test.java
++i 9412000
++i 1397
++i 15749989
++i 20603
++i 20603
++i 21232
++i 21930
++i 21931
++i 21930
++i 22349
[alex@hard java]$ java --version
openjdk 11.0.11 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9)
OpenJDK 64-Bit Server VM (build 11.0.11+9, mixed mode)

Исходная версия InterVi, :

Затестил джаву:

public class Main {
    public static void test() {
        long time = System.nanoTime();
        for (int i = 0; i < 1000000000; i++);
        System.out.println("i++ " + String.valueOf(System.nanoTime() - time));
    }

    public static void test2() {
        long time = System.nanoTime();
        for (int i = 0; i < 1000000000; ++i);
        System.out.println("++i " + String.valueOf(System.nanoTime() - time));
    }

    public static void main(String[] args) {
        //for (int i = 0; i < 10; i++) Main.test();
        for (int i = 0; i < 10; i++) Main.test2();
    }
}

i++ быстрее на старте, ++i быстрее после JIT:

[alex@hard java]$ java Test.java
i++ 4067508
i++ 29474921
i++ 143944
i++ 143664
i++ 130046
i++ 86813
i++ 95892
i++ 90514
i++ 94636
i++ 113353
[alex@hard java]$ java Test.java
i++ 3145249
i++ 7670708
i++ 83111
i++ 79200
i++ 88699
i++ 79130
i++ 84788
i++ 75568
i++ 74660
i++ 86953
[alex@hard java]$ java Test.java
i++ 3642102
i++ 28233416
i++ 70540
i++ 68445
i++ 67676
i++ 65022
i++ 64883
i++ 67537
i++ 82413
i++ 63696

[alex@hard java]$ java Test.java
++i 6875351
++i 44606952
++i 75988
++i 62718
++i 63905
++i 69912
++i 75290
++i 72496
++i 74032
++i 74172
[alex@hard java]$ java Test.java
++i 5049202
++i 6004147
++i 72985
++i 64324
++i 65791
++i 64883
++i 64324
++i 62019
++i 66140
++i 74312
[alex@hard java]$ java Test.java
++i 9412000
++i 1397
++i 15749989
++i 20603
++i 20603
++i 21232
++i 21930
++i 21931
++i 21930
++i 22349