Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Очередные данные о "медленности" JAVA 
:(
    Опции темы
SaDFromSpb
Дата 19.3.2007, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 3



Цитата(Бонифаций @  19.3.2007,  15:16 Найти цитируемый пост)
Я не согласен с таким определением честности. Если ява действует разумнее при распределении памяти, это ее достоинство. Так что если мы пишем один и тот-же алгоритм на C++/java и java обгоняет - то в этом тесте она победила.

Как тут уже сказали, проблема в том, что во многих примерах код явы просто скопировали на с++ и изменили, чтоб скомпилиось. Именно это не честно, потому что если бы человек изначально "думал" на си++, он бы реализовал решение по другому. Эту мысль высказал VOS, а я с ней согласился и добавил свою догадку об одной из причин обгона джавой сей в случае этих примеров.




Цитата(LSD @  19.3.2007,  15:12 Найти цитируемый пост)

Вот только в больших проектах возможности вылизывать каждую строчку кода - нет. 


Чем ты профессиональнее в конкретном языке, тем ты лучше пользуешся его естестественными возможностями. Поэтому у профессионалов опереденная "вылизанность" получается автоматически. 



--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
LSD
Дата 19.3.2007, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(SaDFromSpb @  19.3.2007,  15:31 Найти цитируемый пост)
Чем ты профессиональнее в конкретном языке, тем ты лучше пользуешся его естестественными возможностями. Поэтому у профессионалов опереденная "вылизанность" получается автоматически.

Особенно использование сторонних менеджеров памяти smile 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
$tatic
Дата 19.3.2007, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 28.1.2005

Репутация: нет
Всего: 22



Цитата(SaDFromSpb @  19.3.2007,  04:53 Найти цитируемый пост)
Вот удивил, так удивил!... Это достоверная инфа?

Это достоверная инфа, правда игру Закон и порядок я к сожалению "не щупал". Но Chrome и Xtreme Rally сделаны одной фирмой на одном и том же движке. А Chrome выиграл даже конкурс от Sun Microsystems.

Это сообщение отредактировал(а) $tatic - 19.3.2007, 20:05
PM MAIL   Вверх
JUncle
Дата 19.3.2007, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 6.4.2006
Где: Казань, РФ

Репутация: нет
Всего: 1



Цитата(LSD @  19.3.2007,  15:12 Найти цитируемый пост)
Вот только в больших проектах возможности вылизывать каждую строчку кода - нет. 

А особенно при использовании agile методологий,  где предпочтительнее прозрачный код чем мифическое ускорение на три наносекунды  smile 
--------------------
class JUncle extends Man // singleton{/*...*/}
PM MAIL   Вверх
SaDFromSpb
Дата 20.3.2007, 03:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 3



Цитата(LSD @  19.3.2007,  15:41 Найти цитируемый пост)
Особенно использование сторонних менеджеров памяти smile 

Если прийдешь к осознанию, что это нужно, то это дело пяти минут (если, конечно, не самому писать).

Цитата(JUncle @  19.3.2007,  23:29 Найти цитируемый пост)
А особенно при использовании agile методологий,  где предпочтительнее прозрачный код чем мифическое ускорение на три наносекунды

Прозрачность никуда не денется, если использовать язык естественным образом. 

Тут у нас религиозная война не начинается, случаем?  smile 



--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
VOS
Дата 20.3.2007, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 31.1.2007

Репутация: нет
Всего: 8



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

Итак первоначальный тест:

Код

  //Первый, самый тормозной способ (6781 мс, без delete с - 2875 мс)
  double d = GetTickCount();
  A* c;
  double r=0;
   for (int i=0;i<10000000;i++)
    {
      c=new A;
      r+=c->TT(i,i+1);
     delete c;
    }
   d=(GetTickCount()-d);
   ShowMessage(d);
   ShowMessage®;


Код

//Слегка измененный.  

 //Другой способ. Кол-во объектов динамическое, время - 421 мс
  double d = GetTickCount();
    A* b;
   //Выделить сразу пул памяти под объекты
   //Теперь pull указывает на группу подряд расположенных объектов
    A* pull = new A[10000000];

   //<Отвлечение>
   //В более общем случае лучше переопределять new в классе A
   //тогда можно составить связной список и выделять память по мере надобности
   //сразу кусками по SIZE элементов. При этом оставив возможность "удалять" отдельные объекты.
   //Конечно, реальная память из пула удаляться не будет, но на то он и пул :)
   //Или вести списки с такими кусками объектов. Притом можно разных типов, главное чтобы они были от одного предка.
   //Возможно в Java используют примерно такой способ. А сборщик мусора "упаковывает"
   //объекты в эти "куски", по мере надобности освобождая память сразу целыми кусками.
   //Недаром он там че-то, где-то помечает и приоритеты расставляет.
   //Скорее всего указатели в списке перетыкает :) 
   //Но память при этом он расходует естественно больше. Более того, подозреваю что блоки он выделяет бинарно, т.е.
   //например 1024, израсходовал, то след. блок сразу 2048, потом 4096 и т.д. (Подчеркиваю это IMHO) 
   //</Отвлечение>

   //Если же объекты часто исчезают и появляются, то лучше всего через
   // A a;


  double r=0;
  for (int i=0;i<10000000;i++)
    {
      //Обращаться к элементам теперь можно так:
      r+=pull[i].TT(i,i+1);
      //или так
//      b = pull+i;
//      r+=b->TT(i,i+1);
     //Или так
//      r+=(pull+i)->TT(i,i+1);
    }
   d=(GetTickCount()-d);
   ShowMessage(d);
   ShowMessage®;
   delete [] pull;


Первый тест - 6781 мс
Второй         - 421 мс

Комп - P4  2,4 Ггц  512 МБ
На нем запущен CBuilder, NOD, MS SQL, Oracle, Firebird и т.д. (лень выгружать было)

Это сообщение отредактировал(а) batigoal - 20.3.2007, 11:41
PM MAIL   Вверх
LSD
Дата 20.3.2007, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(VOS @  20.3.2007,  10:23 Найти цитируемый пост)
Первый тест - 6781 мс
Второй         - 421 мс

Это сферический конь в вакуме. Смысл имеют только относительные результаты.

Что же касается кода, то второй пример ни разу не эквивалентен первому. Т.к. во втором случае мы не можем освобождать память по мере необходимости, и если из 10 000 000 объектов нам нужен будет только один, то мы будем держать всю память занятой.

P.S. Не верю я что на машине с 512 Мб памяти и такой толпой запущенных программ:
Цитата(VOS @  20.3.2007,  10:23 Найти цитируемый пост)
На нем запущен CBuilder, NOD, MS SQL, Oracle, Firebird и т.д.

можно комфортно работать. Те же MS SQL и Oracle, памяти жрут немерянно.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
VOS
Дата 20.3.2007, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 31.1.2007

Репутация: нет
Всего: 8



Цитата

Это сферический конь в вакуме. Смысл имеют только относительные результаты


Изволите за ЦСКА болеть?
Согласен конечно. Но относительные результаты думаю очевидны.

Цитата

Что же касается кода, то второй пример ни разу не эквивалентен первому. Т.к. во втором случае мы не можем освобождать память по мере необходимости, и если из 10 000 000 объектов нам нужен будет только один, то мы будем держать всю память занятой.


Я не претендую на это. Всего лишь показал как решить конкретную задачу - быстро создать в куче много небольших объектов.
Реализация механизма, о котором я упомянул во втором примере, позволит и удалять отдельные объекты, но 
его реализовывать только ради теста у меня нет времени.

Цитата

 Не верю я что на машине с 512 Мб памяти и такой толпой запущенных программ...

Это если их активно юзать. Если только хранимки править, то не особо напрягает. А вот когда еще среда разработки для Java запускается, вот тогда не сладко smile Но на Java я пока только под мобилы пишу. Впечатления самые положительные. 
PM MAIL   Вверх
alexsolo
Дата 5.4.2007, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.4.2007

Репутация: нет
Всего: нет



Цитата(VOS @ 10.3.2007,  14:49)
Это в корне неверный подход. Хотите получить реальные тесты по производительности, пригласите специалиста в C++. Поставьте ему задачу и пусть он ее сделает любыми доступными ему средствами в C++, а Вы выполните ее любыми доступными средствами в Java. Естественно исходники должны быть открыты и доступны всем участникам. 

Вот шикарный тест из LZMA SDK и Java и C# и оптимизтрованный C++ и Delphi:

Исходники и бинарники (1.6 MB) Данные прогона на моих компах smile

Код


           Compression                Decompression  

P4 2.6 GHz
~~~~~~~~~~
C++        918 KB/s   1081 MIPS       10261 KB/s   1034 MIPS
Delphi7    645 KB/s    759 MIPS        6410 KB/s    629 MIPS
Java 1.6   608 KB/s    716 MIPS        7026 KB/s    690 MIPS
C#         588 KB/s    692 MIPS        9230 KB/s    930 MIPS

AMD64 3000+ 2 Ghz
~~~~~~~~~~~~~~~~~
C++       1369 KB/s   1612 MIPS       18505 KB/s   1865 MIPS
Java 1.6   890 KB/s   1048 MIPS       11013 KB/s   1082 MIPS
Delphi10F  796 KB/s    937 MIPS        9961 KB/s    978 MIPS
Delphi7    770 KB/s    906 MIPS        9466 KB/s    930 MIPS
C#         757 KB/s    891 MIPS       13833 KB/s   1394 MIPS

INTEL M760 2 Ghz
~~~~~~~~~~~~~~~~
C++       1346 KB/s   1585 MIPS       18831 KB/s   1898 MIPS
Java 1.6   873 KB/s   1028 MIPS        9888 KB/s    971 MIPS
Delphi7    820 KB/s    966 MIPS        7895 KB/s    775 MIPS
C#         784 KB/s    924 MIPS       12307 KB/s   1240 MIPS

Core Duo E6600 2.4 GHz - 1 Core
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C++       1970 KB/s    2320 MIPS      20490 KB/s   2065 MIPS 
Java 1.6  1224 KB/s    1442 MIPS      13315 KB/s   1308 MIPS
Delphi10F 1142 KB/s    1345 MIPS      10745 KB/s   1055 MIPS
C#        1087 KB/s    1280 MIPS      15465 KB/s   1559 MIPS
Delphi7   1063 KB/s    1252 MIPS       9817 KB/s    964 MIPS

PM MAIL   Вверх
LSD
Дата 5.4.2007, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



alexsolo

1. Откуда исходники и под какой лицензией они распространяются?
2. Кто писал код?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Void
Дата 5.4.2007, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



LSDhttp://www.7-zip.org/sdk.html
Try for yourself smile


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
_Nikolas_
Дата 12.4.2007, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 6.2.2007

Репутация: нет
Всего: нет



Не вижу ничего удивительного что жава работает с обычными числами по скорости как С/С++.
По моему основные тормаза по сравнению с С/С++ жаве добавляет ядреное ООП. Всетки большинство реальных приложений на жаве работают заметно медленее их аналогов на С++ и едят больше памяти.
PM MAIL WWW   Вверх
Се ля ви
Дата 20.4.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 8
Всего: 127



В продолжение спора о BEA JRockit. Я продолжаю утверждать, что эта JVM лучше подходит для production-mode J2EE - приложений, даже если они крутятся не на WebLogic`е.

Вот, буквально на днях они выпустили JRockit для Java SE 6.

В качестве примера я взял на своём рабочем компе (P4, 2.8 GHz, 1GB  RAM, WinXP sp2) и протестировал старт сервера JBoss 4.0.5 под последними 5-ми и 6-ми версиями на данный момент. Ничего не настраивал, просто скачал и развернул архив. Результаты такие:

JRockit 6:
Цитата
17:34:22,776 INFO  [ServerInfo] Java VM: BEA JRockit® R27.2.0-131-78843-1.6.0-20070320-1457-windows-ia32,BEA Systems, Inc.
...
17:34:42,344 INFO  [Server] JBoss (MX MicroKernel) [4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)] Started in 20s:499ms


JRockit 5
Цитата
17:43:19,878 INFO  [ServerInfo] Java VM: BEA JRockit® R27.2.0-131-78843-1.5.0_10-20070320-1457-windows-ia32,BEA Systems, Inc.
...
17:43:42,060 INFO  [Server] JBoss (MX MicroKernel) [4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)] Started in 23s:323ms


Sun JDK 5:
Цитата
17:49:49,147 INFO  [ServerInfo] Java VM: Java HotSpot™ Server VM 1.5.0_11-b03,Sun Microsystems Inc.
...
17:50:29,275 INFO  [Server] JBoss (MX MicroKernel) [4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)] Started in 40s:849ms


А Sun JDK 6 почему-то вообще с ошибкой свалилась:
Цитата
18:00:17,501 INFO  [ServerInfo] Java VM: Java HotSpot™ Server VM 1.6.0_01-b06,Sun Microsystems Inc.
...
18:00:30,289 ERROR [MainDeployer] Could not create deployment: file:/C:/Java/JBoss4/server/default/conf/jboss-service.xml
org.jboss.deployment.DeploymentException: - nested throwable: (java.lang.reflect.UndeclaredThrowableException)
        at org.jboss.system.ServiceConfigurator.install(ServiceConfigurator.java:196)
        at org.jboss.system.ServiceController.install(ServiceController.java:226)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
...

Сейчас, разберусь с 6-й JDK - ещё напишу...


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
LSD
Дата 20.4.2007, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Как лицензируется JRockit?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Се ля ви
Дата 20.4.2007, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 8
Всего: 127



Дома тоже эта ошибка наблюдалась. Переставил - вроде пошло. Но машина другая (P4 3GHz, 2Gb RAM), так что - всё по-новой:

Sun JDK 6: 
Цитата
00:04:20,359 INFO  [ServerInfo] Java VM: Java HotSpot™ Server VM 1.6.0_01-b06,Sun Microsystems Inc.
...
00:04:42,265 INFO  [Server] JBoss (MX MicroKernel) [4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)] Started in 22s:453ms


Sun JDK 5: 
Цитата
00:11:31,781 INFO  [ServerInfo] Java VM: Java HotSpot™ Server VM 1.5.0_11-b03,Sun Microsystems Inc.
...
00:11:57,562 INFO  [Server] JBoss (MX MicroKernel) [4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)] Started in 26s:328ms


BEA JRockit 6: 
Цитата
00:13:54,047 INFO  [ServerInfo] Java VM: BEA JRockit® R27.2.0-131-78843-1.6.0-20070320-1457-windows-ia32,BEA Systems, Inc.
...
00:14:10,953 INFO  [Server] JBoss (MX MicroKernel) [4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)] Started in 17s:984ms


BEA JRockit 5: 
Цитата
00:16:29,562 INFO  [ServerInfo] Java VM: BEA JRockit® R27.2.0-131-78843-1.5.0_10-20070320-1457-windows-ia32,BEA Systems, Inc.
...
00:16:45,938 INFO  [Server] JBoss (MX MicroKernel) [4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)] Started in 17s:422ms


Тоесть у пятёрочки JRockit при избытке памяти производительность даже возросла...


Цитата(LSD @  20.4.2007,  21:55 Найти цитируемый пост)
Как лицензируется JRockit?

Ссылка для скачки на сайте BEA сопровождается текстом: 
Цитата
Freely Available! BEA JRockit is available for free download for evaluation and production use.

Завтра покопаюсь боле пристально в лицензионном соглашении, может быть и найду что-то интересное...

Я думаю, дело в том, что к JRockit идут дополнительные инструменты для диагностики memory leak`ов  и тюнинга - вот их использование уже вроде бы платно, хотя их тоже можно и скачивать и юзать - но уже в права на них я не вникал...


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1039 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.