Здравствуйте, Cyberax, Вы писали:
C> C>>Проблема в том, что тестировать Java надо аккуратно. В ней JIT-компиляция происходит не сразу, а по результатам профилирования кода (HotSpot). Поэтому надо дать ей время, чтоб она оптимизировалась. Разница в таких микротестах от этого огромная, здесь почти в 10 раз. Ещё можно заняться тюнингом GC, где-то в два раза ещё получится ускорить.
C> CC>Можно ли как то жаббу собрать всё таки в бинарь, который не потребует установки рантайма для своего запуска?
C> Нельзя. Точнее, можно, но там GC сильно хуже будет.
C> CC>Хочется поиграться и посмотреть что к чему.
C> Поставь себе JDK и не мучайся, там всё необходимое для теста есть.
У меня установлен, как запустить на выполнение (Windows)?
Здравствуйте, -MyXa-, Вы писали:
MX> Тут ещё стоит заметить, что вариант на С++ использует почти в 2 раза больше оперативной памяти, чем на Java.
MX> http://files.rsdn.ru/46238/java_and_cpp.png
CC>>>Где там в десятки раз медленнее? C>>Здесь: C>>Проблема в том, что тестировать Java надо аккуратно. В ней JIT-компиляция происходит не сразу, а по результатам профилирования кода (HotSpot). Поэтому надо дать ей время, чтоб она оптимизировалась. Разница в таких микротестах от этого огромная, здесь почти в 10 раз. Ещё можно заняться тюнингом GC, где-то в два раза ещё получится ускорить.
CC>Можно ли как то жаббу собрать всё таки в бинарь, который не потребует установки рантайма для своего запуска? CC>Хочется поиграться и посмотреть что к чему.
Можно, но это будет уже черти-что, а не жаба.
Чего ты так рантайма-то боишься? Его установка — минутное дело.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, hattab, Вы писали:
C>> Поставь себе JDK и не мучайся, там всё необходимое для теста есть. H>У меня установлен, как запустить на выполнение (Windows)?
Компиляция "JDK_ROOT\bin\javac Foo.java" в каталоге с Foo.java, получится файлик Foo.class.
Запуск на выполнение: "JDK_ROOT\bin\java -cp . Foo" (NB! Не Foo.class, а просто Foo) в каталоге с Foo.class.
Здравствуйте, Ikemefula, Вы писали:
CC>>Что и требовалось доказать: у С++ длиннее и толще! I>Для дотнета тесты можно глянуть здесь http://rsdn.ru/article/dotnet/GCnet.xml
Здравствуйте, Eugeny__, Вы писали:
E__>Чего ты так рантайма-то боишься? Его установка — минутное дело.
Зато потом выносить его отовсюду гемор тот ещё.
На работе на предыдущем компе поставил как то.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
E__>>Чего ты так рантайма-то боишься? Его установка — минутное дело. CC>Зато потом выносить его отовсюду гемор тот ещё. CC>На работе на предыдущем компе поставил как то.
Хм... Откуда отовсюду? Я, правда, под винду давно не ставил, но вроде как прописывается жаба мало где. В принципе, java вообще может ставиться простым копирпованием(и отлично работать), программа инсталляции — это тупо набор свистелок и перделок, которые для работы вообще не нужны.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Cyberax, Вы писали:
C> C>> Поставь себе JDK и не мучайся, там всё необходимое для теста есть.
C> H>У меня установлен, как запустить на выполнение (Windows)?
C> Компиляция "JDK_ROOT\bin\javac Foo.java" в каталоге с Foo.java, получится файлик Foo.class.
C> Запуск на выполнение: "JDK_ROOT\bin\java -cp . Foo" (NB! Не Foo.class, а просто Foo) в каталоге с Foo.class.
Все получилось Дельфийский тест переписал аналогично жабьему. Результаты:
Phenom II X4 940BE 3300MHz:
Java: 3, 80000
Delphi 20, 80000
Посыпаю голову пеплом, в прошлом тесте забыл проинициализировать Stopwatch (оказывается его, advanced record, необходимо инициализировать, как и объекты. Дурдом ) отсюда и столь хорошие показатели Во время прогона Java-тест отожрал ~780Mb, Delphi-тест ~22Mb (ProcessExplorer, PrivateBytes). Система Windows 7 x64. Delphi-тест 32'битный, JDK и JRE 1.6 64'битные.
Здравствуйте, hattab, Вы писали:
H>Посыпаю голову пеплом, в прошлом тесте забыл проинициализировать Stopwatch (оказывается его, advanced record, необходимо инициализировать, как и объекты. Дурдом ) отсюда и столь хорошие показатели Во время прогона Java-тест отожрал ~780Mb, Delphi-тест ~22Mb (ProcessExplorer, PrivateBytes). Система Windows 7 x64. Delphi-тест 32'битный, JDK и JRE 1.6 64'битные.
780Мб — многовато, можно настройками GC оптимизировать. В среднем, должно быть 10Мб + объём_памяти_на_С++ * 3.
Здравствуйте, Cyberax, Вы писали:
C> H>Посыпаю голову пеплом, в прошлом тесте забыл проинициализировать Stopwatch (оказывается его, advanced record, необходимо инициализировать, как и объекты. Дурдом ) отсюда и столь хорошие показатели Во время прогона Java-тест отожрал ~780Mb, Delphi-тест ~22Mb (ProcessExplorer, PrivateBytes). Система Windows 7 x64. Delphi-тест 32'битный, JDK и JRE 1.6 64'битные.
C> 780Мб — многовато, можно настройками GC оптимизировать. В среднем, должно быть 10Мб + объём_памяти_на_С++ * 3.
Вот с такой "java -Xmx64M -cp . Foo" командной строкой расход составляет около 92Mb, а время скачет от 6 до 45.
Здравствуйте, hattab, Вы писали:
C>> H>Посыпаю голову пеплом, в прошлом тесте забыл проинициализировать Stopwatch (оказывается его, advanced record, необходимо инициализировать, как и объекты. Дурдом ) отсюда и столь хорошие показатели Во время прогона Java-тест отожрал ~780Mb, Delphi-тест ~22Mb (ProcessExplorer, PrivateBytes). Система Windows 7 x64. Delphi-тест 32'битный, JDK и JRE 1.6 64'битные. C>> 780Мб — многовато, можно настройками GC оптимизировать. В среднем, должно быть 10Мб + объём_памяти_на_С++ * 3. H>Вот с такой "java -Xmx64M -cp . Foo" командной строкой расход составляет около 92Mb, а время скачет от 6 до 45.
Ага, похоже на правду. Теперь надо ещё затюнить GC обратно чтоб работал быстро.
Производительность 99% кода неособо вожна, но когда в приложении вдруг возникнет проблема с перфомонсом, то этот 1% кода в плюсах можно оптимизировать и получить требуемый результат, а в жаве нет В плюсах и алокатор можно на свой очень быстрый свой поставить, и строки более умные использовать, и исбавиться лишнего копирования перейдя на указатели на обьекты — и будет этот код менее милисекунды работать. А вот в джаве если упрешся в перфоманс — ничего сделать с этим не сможешь.
Здравствуйте, Cyberax, Вы писали:
C> C>> H>Посыпаю голову пеплом, в прошлом тесте забыл проинициализировать Stopwatch (оказывается его, advanced record, необходимо инициализировать, как и объекты. Дурдом ) отсюда и столь хорошие показатели Во время прогона Java-тест отожрал ~780Mb, Delphi-тест ~22Mb (ProcessExplorer, PrivateBytes). Система Windows 7 x64. Delphi-тест 32'битный, JDK и JRE 1.6 64'битные.
C> C>> 780Мб — многовато, можно настройками GC оптимизировать. В среднем, должно быть 10Мб + объём_памяти_на_С++ * 3.
C> H>Вот с такой "java -Xmx64M -cp . Foo" командной строкой расход составляет около 92Mb, а время скачет от 6 до 45.
C> Ага, похоже на правду. Теперь надо ещё затюнить GC обратно чтоб работал быстро.
Здравствуйте, hattab, Вы писали:
C>> Ага, похоже на правду. Теперь надо ещё затюнить GC обратно чтоб работал быстро. H>java -Xincgc -Xmx64M -cp . Foo H>Расход 106Mb, время от 4 до 12.
Инкрементальный GC здесь не очень подходит. Он даёт меньшие паузы за счёт бОльшего оверхеда.
Можно попробовать конкурентный mark&sweep, но он может банально не справиться с таким напором объектов.
Здравствуйте, Cyberax, Вы писали:
C> C>> Ага, похоже на правду. Теперь надо ещё затюнить GC обратно чтоб работал быстро.
C> H>java -Xincgc -Xmx64M -cp . Foo C> H>Расход 106Mb, время от 4 до 12.
C> Инкрементальный GC здесь не очень подходит. Он даёт меньшие паузы за счёт бОльшего оверхеда.
C> Можно попробовать конкурентный mark&sweep, но он может банально не справиться с таким напором объектов.
C> Могу дома поиграться с опциями.
Здравствуйте, Eugeny__, Вы писали:
E__>Хм... Откуда отовсюду? Я, правда, под винду давно не ставил, но вроде как прописывается жаба мало где.
Ну вот на оффсайте лежит инсталляк который лезет в браузер, в системе какие то апдейтеры и апплеты прописывает.
E__>В принципе, java вообще может ставиться простым копирпованием(и отлично работать)
Где взять Java.rar который достаточно тупо распаковать в папку и чтоб больше нигде и ничего?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Nik_1, Вы писали:
N_>Производительность 99% кода неособо вожна, но когда в приложении вдруг возникнет проблема с перфомонсом, то этот 1% кода в плюсах можно оптимизировать и получить требуемый результат, а в жаве нет В плюсах и алокатор можно на свой очень быстрый свой поставить, и строки более умные использовать, и исбавиться лишнего копирования перейдя на указатели на обьекты — и будет этот код менее милисекунды работать. А вот в джаве если упрешся в перфоманс — ничего сделать с этим не сможешь.
И ради этого 1% тебе надо постоянно, чт бы ты не писал, думать о тысячах мелочей.
В джаве можно сосредоточиться на более высокоуровневой оптимизации.
Здравствуйте, McSeem2, Вы писали:
MS>Вот поэтому я и не люблю эти ваши STL и Boost. List, deque, string и прочие начинают терзать и рвать в клочья аллокатор, из за чего производительность просаживается в тысячи раз, а оверхед по памяти возрастает в десятки. String вообще использовать категорически нельзя. std::vector<char> — более-менее терпимо. А списки и дерева должны быть интрузивными.
Для использования в проекте можно взять конкректную реализацию , например STLPort.
Но различные имплементации STL это не слабость библиотеки а ее сила. Тем самым производитель компилатора может оптимизировать версию STL под конкретную среду или сценарий использования.
Например на PC можно выделять память для связанного списка, непрерывнвми блоками памаяти по N элементов.
Алгоритмы STL могут использовать спецефические для платформы оптимизации и т.п.
Таким образом используя STL с одной стороны можно надеяться что она будет максимально эфективной для конкретной платформы а с другой стороны всегда можно использовать заданную имплементацию с предсказуемым поведением.