Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

разница между -client/-server

2.7K
21 октября 2006 года
alexeyvnikitin
96 / / 11.10.2004
Решил я на днях сравнить производительность Java и написал простенькое перемножение матриц. Результат замерялся с опцией -Xbatch при разных конфигурациях VM. Каково же было моё удивление, когда с ключём -server время упало ~1.5 раза. Я не могу понять почему. Вроде код не хитрый, память не кушается, всё изначально компилируется в нативный код.
Почему так происходит?
21K
22 октября 2006 года
Wizzie
12 / / 22.10.2006
[QUOTE=alexeyvnikitin]Решил я на днях сравнить производительность Java и написал простенькое перемножение матриц. Результат замерялся с опцией -Xbatch при разных конфигурациях VM. Каково же было моё удивление, когда с ключём -server время упало ~1.5 раза. Я не могу понять почему. Вроде код не хитрый, память не кушается, всё изначально компилируется в нативный код.
Почему так происходит?[/QUOTE]

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

Еще лучше нагрести документации по параметрам GC для JVM и подобрать те, которые показывают лучшие результаты...

А еще лучше (все лучшее и лучшее) стараться не множить разного рода временные объекты в коде...
2.7K
25 октября 2006 года
alexeyvnikitin
96 / / 11.10.2004
[QUOTE=Wizzie]если приложение оперирует большим количеством объектов[/QUOTE]
По сути, используются только 3 объекта, над которыми производятся различные операции, но, скорее всего, дело в скорости работы с памятью
21K
28 октября 2006 года
Wizzie
12 / / 22.10.2006
[QUOTE=alexeyvnikitin]По сути, используются только 3 объекта, над которыми производятся различные операции, но, скорее всего, дело в скорости работы с памятью[/QUOTE]

То есть оператор new не используется вообще?
2.7K
29 октября 2006 года
alexeyvnikitin
96 / / 11.10.2004
[QUOTE=Wizzie]То есть оператор new не используется вообще?[/QUOTE]
Вот код тестирования:

 
Код:
Matrix a = new Matrix(60, 60), b = new Matrix(60, 60), res = new Matrix(60, 60);

    long time = System.currentTimeMillis();
    for (int i = 0; i < 1000; i++)
      a.mul(b, res);
    time = System.currentTimeMillis() - time;
    System.out.println("Time: " + time / 1000.0);


и перемножения:
Код:
public Matrix mul( Matrix m, Matrix res )
  {
    for (int i = 0; i < res.a.length; i++)
      for (int j = 0; j < res.a[0].length; j++) {
        double sum = 0;
     
        for (int k = 0; k < a[0].length; k++)
          sum += a[k] * m.a[k][j];    
        res.a[j] = sum;
      }
   
    return res;
  }
21K
29 октября 2006 года
Wizzie
12 / / 22.10.2006
Да, действительно только "хождение по поинтерам"... Честно говоря это радует, что Sun, наконец, сподобился начать оптимизацию кода... А вот интересно, если res.a b вытаскивать в стек перед обработкой во внутреннем цикле код будет быстрее работать ;)?
21K
29 октября 2006 года
Wizzie
12 / / 22.10.2006
Кстати, с Sun-а:
Цитата:
What's the difference between the -client and -server systems?
These two systems are different binaries. They are essentially two different compilers (JITs) interfacing to the same runtime system. The client system is optimal for applications which need fast startup times or small footprints, the server system is optimal for applications where the performance is most important. In general the client system is better on GUIs. Some of the other differences include the compilation policy used, heap defaults, and inlining policy.


Короче говоря, сервер чуть умнее клиента :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог