powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Числодробительность
25 сообщений из 25, страница 1 из 1
Числодробительность
    #38808439
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаем слегка запутанный цикл, чтобы JIT не зверствовал и считаем среднее по средним итерациям для int и long:
микротест
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
package test;

class Test
{
  public static void main(String[] args)
  {
    final int COUNTER = Integer.MAX_VALUE;
    final int TIMES = 5;
    long
      timeMin = Long.MAX_VALUE,
      timeMax = Long.MIN_VALUE,
      testTime = 0;
    // сделаем несколько итераций и отбросим худший и лучший замеры
    // счётчик цикла - int
    System.out.println("--");
    System.out.println("Loop with  int counter");
    for (int i = 0; i < TIMES; i++) {
      int result = 0, counter = 0;
      long ts = System.nanoTime();
      while (++counter < COUNTER) {
        if (0 == counter % 10) result = ++counter / 10;
      }
      ts = System.nanoTime() - ts;
      if (ts < timeMin) timeMin = ts;
      if (ts > timeMax) timeMax = ts;
      testTime += ts;
      ts = (ts + 500000) / 1000000;
      System.out.println(i + ": " + result + ", " + ts + " ms"); 
    }
    testTime -= timeMin + timeMax;
    testTime = testTime / (TIMES - 2);
    testTime = (testTime + 500000) / 1000000;
    System.out.println("Average time (int) : " + testTime + " ms, " + (TIMES-2) + " measures");
    // инициируем второй вариант
    timeMin = Long.MAX_VALUE;
    timeMax = Long.MIN_VALUE;
    testTime = 0;
    // счётчик цикла - Long
    System.out.println("Loop with long counter");
    for (int i = 0; i < 5; i++) {
      long result = 0, counter = -1;
      long ts = System.nanoTime();
      while (++counter < COUNTER) {
        if (0 == counter % 10) result = counter / 10;
      }
      ts = System.nanoTime() - ts;
      if (ts < timeMin) timeMin = ts;
      if (ts > timeMax) timeMax = ts;
      testTime += ts;
      ts = (ts + 500000) / 1000000;
      System.out.println(i + ": " + result + ", " + ts + " ms"); 
    }
    testTime -= timeMin + timeMax;
    testTime = testTime / (TIMES - 2);
    testTime = (testTime + 500000) / 1000000;
    System.out.println("Average time (long): " + testTime + " ms, " + (TIMES-2) + " measures");
    System.out.println("");
  }
}

Запускаем и для long получаем неслабую такую просадку на 32-разрядной JVM:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM)  64-Bit   Server VM  (build 24.71-b01, mixed mode)
--
Average time (int) : 6330 ms, 3 measures
Average time (long): 6968 ms, 3 measures

Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM)  Server VM  (build 24.71-b01, mixed mode)
--
Average time (int) :  8054  ms, 3 measures
Average time (long):  38190  ms, 3 measures

Запускается всё с "Нужный\путь\java.exe -server -Xshare:off -jar test.jar".
share:off, т.к. share:on - ненадёжная вещь, которая не влияет на скорость.
server, т.к. клиентская VM есть только в 32-разрядной версии и, к тому же, на ней всё ещё более кисло:
Код: plaintext
1.
2.
3.
4.
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM)  Client VM  (build 24.71-b01, mixed mode)
--
Average time (int) :  40746  ms, 3 measures
Average time (long):  71041  ms, 3 measures
Класс откомпилирован с target 1.5, разница между java6 и java7 - в пределах погрешности.
Athlon II X2 250 3ГГц/6Гб, Windows 7 SP1.

Учитывая, что из JRE серверная JVM выпилена, начинаю понимать, почему народ считает яву тормозом.

Ну и, собственно, вопрос: разброс производительности воспроизводится?
...
Рейтинг: 0 / 0
Числодробительность
    #38808465
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

Странное что-то. У мну всё норм:

Код: java
1.
2.
3.
4.
5.
6.
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) Client VM (build 24.51-b03, mixed mode)

Average time (int) : 10657 ms, 3 measures
Average time (long): 34035 ms, 3 measures
...
Рейтинг: 0 / 0
Числодробительность
    #38808479
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://ru.wikibooks.org/wiki/Java/Типы_данных

int 32 бит от -2147483648 до 2147483647
long 64 бит от -9223372036854775808 до 9223372036854775807

на 32 битном проце:
int - 1 инструкция
long - 2 инструкции (и два регистра)

Что и видим, на 64 битов - скорость почти одинаковая. На 32 битов от сильного падения до чуть меньше двухкратного

кол-во занимаемых регистров значительно более важно. Возможно, что > двух раз разница, это именно не возможность вписать код в доступные регистры процессора.

IMHO
...
Рейтинг: 0 / 0
Числодробительность
    #38808483
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм ...
Если у вас - Intel, то похоже на косяк JIT для AMD-процов.
...
Рейтинг: 0 / 0
Числодробительность
    #38808486
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно тупой вопрос, а что Вас удивляет?
А то я, если честно, вообще как-то всю глубину проблемы не понял.
...
Рейтинг: 0 / 0
Числодробительность
    #38808487
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsevint 32 бит от -2147483648 до 2147483647
long 64 бит от -9223372036854775808 до 9223372036854775807

на 32 битном проце:
int - 1 инструкция
long - 2 инструкции (и два регистра)1. Я, как бы, в курсе;
2. Забыл упомянуть, но по контексту и объёму памяти должно было быть понятно, что и проц и винда - 64-разрядные.
...
Рейтинг: 0 / 0
Числодробительность
    #38808489
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovХм ...
Если у вас - Intel, то похоже на косяк JIT для AMD-процов.
Какой нафиг JIT??? Клиентская JVM это раз. Она интерпретирует до упора. JIT компилирует методы целиком - это два. Test.main(), который запускается 1 раз он компилировать не будет.
...
Рейтинг: 0 / 0
Числодробительность
    #38808491
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevА то я, если честно, вообще как-то всю глубину проблемы не понял.Сравните (мой) цифры для Client и Server 32-разрядной JVM.
Ясен перец, что просадка будет, но ведь не настолько же ...
...
Рейтинг: 0 / 0
Числодробительность
    #38808492
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЗапускаем и для long получаем неслабую такую просадку на 32-разрядной JVM
и при чем тут нижеследующее?
Basil A. Sidorov2. Забыл упомянуть, но по контексту и объёму памяти должно было быть понятно, что и проц и винда - 64-разрядные.
...
Рейтинг: 0 / 0
Числодробительность
    #38808498
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЯсен перец, что просадка будет, но ведь не настолько же ...
Насколько?

сложение чисел - одна машинная операция vs две машинные операции. Два раза
деление, остаток от деления - тут разница должна быть больше

плюс, возможно, не вписываемся в регистры. Тогда кроме арифметики получаем еще и задержку на лишний доступ в память, в оптимизированном варианте

Теперь осталось переписать данный код на C, скомпилировать в 32-битный ASM и сравнить )))
...
Рейтинг: 0 / 0
Числодробительность
    #38808504
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov2. Забыл упомянуть, но по контексту и объёму памяти должно было быть понятно, что и проц и винда - 64-разрядные.
Скорее всего из-за этого тормоза. У меня 32х битная винда.
...
Рейтинг: 0 / 0
Числодробительность
    #38808515
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov, в рамках такого тонкого теста я-бы форсировал CompileThreshold.

И для полноты теста я-бы смотрел матрицу вида JRE6/JRE7/JRE8 и по вертикали
W32/Win32_x64/Linux32/32_x64.
...
Рейтинг: 0 / 0
Числодробительность
    #38808615
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovСравните (мой) цифры для Client и Server 32-разрядной JVM.
Ясен перец, что просадка будет, но ведь не настолько же ...
Сервер запускает JIT компиляцию, клиент нет. Что удивляет?

BlazkowiczJIT компилирует методы целиком - это два. Test.main(), который запускается 1 раз он компилировать не будет.
Не правда. JIT, ссуко, умный. Почти как суслик. Он в динамике методы перекомпилирует и перелинковыет (переинлайневает). AFAIK
...
Рейтинг: 0 / 0
Числодробительность
    #38808618
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevНе правда. JIT, ссуко, умный. Почти как суслик. Он в динамике методы перекомпилирует и перелинковыет (переинлайневает). AFAIK
У Василия в тесте один метод. Хрен там чего JIT перелинкует и перекомпилирует.
...
Рейтинг: 0 / 0
Числодробительность
    #38808625
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczУ Василия в тесте один метод. Хрен там чего JIT перелинкует и перекомпилирует.
Будет время, запущу с логом. Но AFAIK современным JRE это пофиг
...
Рейтинг: 0 / 0
Числодробительность
    #38808639
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevБудет время, запущу с логом. Но AFAIK современным JRE это пофиг
Был не прав. Чего-то там компиляет. Спасибо.
...
Рейтинг: 0 / 0
Числодробительность
    #38808684
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перенёс пузомерочные циклы в отдельные методы, изменил протоколирование, увеличил число циклов:
пузомерка+
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
package test;

class Test
{
  final static int COUNTER = Integer.MAX_VALUE;
  final static int TIMES = 10;
  static long timeMin, timeMax, testTime;
  static String msg;
    
  public static void main(String[] args)
  {
    timeMin = Long.MAX_VALUE;
    timeMax = Long.MIN_VALUE;
    testTime = 0;
    msg = "(int) ";
    System.out.println("Loop with " + msg + " counter");
    for (int i = 0; i < TIMES; i++) testInt(i);
    print("(int) ");
    
    System.out.println("");
    
    timeMin = Long.MAX_VALUE;
    timeMax = Long.MIN_VALUE;
    testTime = 0;
    msg = "(long)";
    System.out.println("Loop with " + msg + " counter");
    for (int i = 0; i < TIMES; i++) testLong(i);
    print("(long)");
    
    System.out.println("--");
    System.out.println("");
  }
  
  static long toMillis(long ts)
  {
    return (ts + 500000) / 1000000;
  }
  
  static long average(long total, int count)
  {
    return (total + count / 2) / count;
  }

  static void print(String msg)
  {
    testTime -= timeMin + timeMax;
    testTime = average(testTime, TIMES - 2);
    testTime = toMillis(testTime);
    timeMax = toMillis(timeMax);
    timeMin = toMillis(timeMin);
    System.out.println("Worst/best time " + msg + ": " + timeMax + " / " + timeMin + " ms");
    System.out.println("   Average time " + msg + ": " + testTime + " ms, " + (TIMES-2) + " measures");
  }
  
  static void testInt(int i)
  {
    int result = 0, counter = 0;
    long ts = System.nanoTime();
    while (++counter < COUNTER) {
      if (0 == counter % 10) result = ++counter / 10;
    }
    ts = System.nanoTime() - ts;
    testTime += ts;
    if (ts < timeMin) timeMin = ts;
    if (ts > timeMax) timeMax = ts;
    ts = toMillis(ts);
    System.out.println(" " + i + ": " + result + ", " + ts + " ms"); 
  }
  
  static void testLong(int i)
  {
    long result = 0, counter = 0;
    long ts = System.nanoTime();
    while (++counter < COUNTER) {
      if (0 == counter % 10) result = ++counter / 10;
    }
    ts = System.nanoTime() - ts;
    if (ts < timeMin) timeMin = ts;
    if (ts > timeMax) timeMax = ts;
    testTime += ts;
    ts = toMillis(ts);
    System.out.println(" " + i + ": " + result + ", " + ts + " ms"); 
  }
}

С 64-разрядной JVM ничего не изменилось:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM)  64-Bit   Server VM  (build 24.71-b01, mixed mode)

Worst/best time (int) : 6902 / 5167 ms
   Average time (int) : 5384 ms, 8 measures

Worst/best time (long): 6536 / 6244 ms
   Average time (long): 6282 ms, 8 measures
--

С 32-разрядными JVM всё гораздо гораздее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM)  Server VM  (build 24.71-b01, mixed mode)

Worst/best time (int) : 6106 / 5022 ms
   Average time (int) : 5159 ms, 8 measures

Worst/best time (long): 42442 / 32359 ms
   Average time (long): 33642 ms, 8 measures
--

Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM)  Client VM  (build 24.71-b01, mixed mode)

Worst/best time (int) : 41269 / 40687 ms
   Average time (int) : 40786 ms, 8 measures

Worst/best time (long): 67501 / 65047 ms
   Average time (long): 65395 ms, 8 measures
--

Выводы (для 64-разрядной Windows 7) остаются прежними:
1. Серверная JVM изначально исполняет гораздо более оптимальный код;
2. Если метод вызывается несколько раз, то серверная JVM может ускорить выполнение ещё на 15-30 процентов;
3. Клиентская JVM тоже оптимизирует повторные вызовы, но чисто косметически - не более трёх процентов.
полный протокол запусков
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)

Loop with (int)  counter
 0: 214748364, 6900 ms
 1: 214748364, 6902 ms
 2: 214748364, 5167 ms
 3: 214748364, 5170 ms
 4: 214748364, 5167 ms
 5: 214748364, 5169 ms
 6: 214748364, 5168 ms
 7: 214748364, 5168 ms
 8: 214748364, 5167 ms
 9: 214748364, 5167 ms
Worst/best time (int) : 6902 / 5167 ms
   Average time (int) : 5384 ms, 8 measures

Loop with (long) counter
 0: 214748364, 6536 ms
 1: 214748364, 6536 ms
 2: 214748364, 6254 ms
 3: 214748364, 6245 ms
 4: 214748364, 6244 ms
 5: 214748364, 6244 ms
 6: 214748364, 6244 ms
 7: 214748364, 6245 ms
 8: 214748364, 6246 ms
 9: 214748364, 6245 ms
Worst/best time (long): 6536 / 6244 ms
   Average time (long): 6282 ms, 8 measures
--

Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) Server VM (build 24.71-b01, mixed mode)

Loop with (int)  counter
 0: 214748364, 6106 ms
 1: 214748364, 6100 ms
 2: 214748364, 5034 ms
 3: 214748364, 5024 ms
 4: 214748364, 5022 ms
 5: 214748364, 5024 ms
 6: 214748364, 5025 ms
 7: 214748364, 5022 ms
 8: 214748364, 5023 ms
 9: 214748364, 5023 ms
Worst/best time (int) : 6106 / 5022 ms
   Average time (int) : 5159 ms, 8 measures

Loop with (long) counter
 0: 214748364, 42442 ms
 1: 214748364, 42417 ms
 2: 214748364, 32365 ms
 3: 214748364, 32371 ms
 4: 214748364, 32361 ms
 5: 214748364, 32530 ms
 6: 214748364, 32361 ms
 7: 214748364, 32359 ms
 8: 214748364, 32360 ms
 9: 214748364, 32368 ms
Worst/best time (long): 42442 / 32359 ms
   Average time (long): 33642 ms, 8 measures
--

java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) Client VM (build 24.71-b01, mixed mode)

Loop with (int)  counter
 0: 214748364, 41269 ms
 1: 214748364, 41259 ms
 2: 214748364, 40694 ms
 3: 214748364, 40687 ms
 4: 214748364, 40688 ms
 5: 214748364, 40704 ms
 6: 214748364, 40693 ms
 7: 214748364, 40795 ms
 8: 214748364, 40746 ms
 9: 214748364, 40712 ms
Worst/best time (int) : 41269 / 40687 ms
   Average time (int) : 40786 ms, 8 measures

Loop with (long) counter
 0: 214748364, 67500 ms
 1: 214748364, 67501 ms
 2: 214748364, 65053 ms
 3: 214748364, 65047 ms
 4: 214748364, 65058 ms
 5: 214748364, 65083 ms
 6: 214748364, 65077 ms
 7: 214748364, 65170 ms
 8: 214748364, 65131 ms
 9: 214748364, 65087 ms
Worst/best time (long): 67501 / 65047 ms
   Average time (long): 65395 ms, 8 measures
Практическая рекомендация:
1. По возможности, не использовать 32-разрядную JRE на 64-разрядной системе.
2. Если установлен 32-разрядный JDK или из него "выдрана" JRE, то поменять порядок строк в jre\lib\i386\jvm.cfg.
Было:
Код: plaintext
1.
2.
-client KNOWN
-server KNOWN
-hotspot ALIASED_TO -client
Стало:
Код: plaintext
1.
2.
-server KNOWN
-client KNOWN
-hotspot ALIASED_TO -server
При этом умалчиваемой станет серверная JVM.

P.S. Удочка приложена, поэтому запуски на других OS/JVM оставляются тем, у кого есть другие OS/JVM
...
Рейтинг: 0 / 0
Числодробительность
    #38808688
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovПо возможности, не использовать 32-разрядную JRE на 64-разрядной системе.
Спасибо . Для меня ценное замечание. Никогда не об этом не знал/не думал.

В принципе, с учетом, что в 64 разрядном режиме даже регистров процессора общего назначения почти в 2-а раза больше - удивляться не чему. Слабое место x86 архитектуры, мало кол-во регистров общего назначения, наконец пофиксили.

Х.з. правда как ))) Опять небось префексов наплодили. Даже на 32-битный HEX код с префиксами смотреть без слез было нельзя.
...
Рейтинг: 0 / 0
Числодробительность
    #38808695
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык, в соседнем топике я давал ссылку на спецификации AMD64.
Для "интересующихся" основное изложено в первом томе, ну и можно ещё посмотреть второй.
Достаточно пробежаться по диагонали
...
Рейтинг: 0 / 0
Числодробительность
    #38808905
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovПо возможности, не использовать 32-разрядную JRE на 64-разрядной системе.когда ещё был сан
и ещё задолго до этого

они сами писали об этом :)
...
Рейтинг: 0 / 0
Числодробительность
    #38809121
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ubuntu 12.04.5 LTS
Linux HELLBOT 3.5.0-54-generic #81~precise1-Ubuntu SMP Tue Jul 15 04:05:58 UTC 2014 i686 i686 i386 GNU/Linux

java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) Client VM (build 24.51-b03, mixed mode)
Код: powershell
1.
2.
3.
4.
5.
6.
$java -client -Xshare:off -jar test.jar
--
Loop with  int counter
Average time (int) : 10862 ms, 3 measures
Loop with long counter
Average time (long): 49738 ms, 3 measures


Код: powershell
1.
2.
3.
4.
5.
6.
$java -server -Xshare:off -jar test.jar
--
Loop with  int counter
Average time (int) : 6104 ms, 3 measures
Loop with long counter
Average time (long): 14486 ms, 3 measures



Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
$ java -client -Xshare:off -jar test2.jar 
Loop with (int)  counter
Worst/best time (int) : 10850 / 10803 ms
   Average time (int) : 10841 ms, 8 measures

Loop with (long) counter
Worst/best time (long): 47636 / 46310 ms
   Average time (long): 46796 ms, 8 measures


Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
$java -server -Xshare:off -jar test2.jar
--
Loop with (int)  counter
Worst/best time (int) : 6487 / 4600 ms
   Average time (int) : 4837 ms, 8 measures

Loop with (long) counter
Worst/best time (long): 10387 / 9924 ms
   Average time (long): 9984 ms, 8 measures
...
Рейтинг: 0 / 0
Числодробительность
    #38811561
Kenny Fartman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А аб чем топег?Basil A. SidorovУчитывая, что из JRE серверная JVM выпилена, начинаю понимать, почему народ считает яву тормозом.
А может, эт самое, тормоз тот кто пишет такие специально замудреные, запутаные циклы?

И да, где exeшник на C, чтобы сравнить?
...
Рейтинг: 0 / 0
Числодробительность
    #38811682
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kenny FartmanА может, эт самое, тормоз тот кто пишет такие специально замудреные, запутаные циклы?Тормоз тот, кто не знаком с возможностями оптимизации JIT.И да, где exeшник на C, чтобы сравнить?Если я захочу сравнивать це и жабу - перейду в "Программирование".
...
Рейтинг: 0 / 0
Числодробительность
    #38811913
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)


Loop with  int counter
0: 214748364, 5747 ms
1: 214748364, 5416 ms
2: 214748364, 5381 ms
3: 214748364, 5375 ms
4: 214748364, 5500 ms
Average time (int) : 5432 ms, 3 measures
Loop with long counter
0: 214748364, 6404 ms
1: 214748364, 6569 ms
2: 214748364, 6477 ms
3: 214748364, 6389 ms
4: 214748364, 6307 ms
Average time (long): 6423 ms, 3 measures
...
Рейтинг: 0 / 0
Числодробительность
    #38812276
Kenny Fartman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovKenny FartmanА может, эт самое, тормоз тот кто пишет такие специально замудреные, запутаные циклы?Тормоз тот, кто не знаком с возможностями оптимизации JITВот именно. Может быть кое-кто не знаком с условиями когда JIT начинает применяться к коду
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Числодробительность
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]