LINUX.ORG.RU

Java SE 6 Performance White Paper


0

0

Представлен сравнительный обзор показателей производительности и улучшений в масштабируемости Java стандартной версии 6 (Update 2) в сравнении с предыдущей версией платформы Java 5.0.

Java SE 6 включает несколько новых функций и усовершенствований для повышения производительности во многих частях платформы. Улучшения включают:

  • синхронизованные оптимизации выполнения, оптимизации производительности компилятора;
  • новый параллельный уплотняющий сборщик мусора (Parallel Compaction Collector);
  • более эргономичный параллельный низколатентный сборщик мусора (Concurrent Low Pause Collector);
  • ускорение запуска приложений.
Сравнение современной версии Java SE 6 Update 2 ведётся с предыдущей версией платформы -- Java SE 5 FCS.
Так, например, производительность операций ввода-вывода Java 6 в два раза выше, чем у Java 5.0; производительность корпоративных систем по тесту SPECjbb2005 Benchmark возросла на 70%; производительность Java в популярном тесте VolanoMark Benchmark выросла более чем на 40%; скорость запуска приложений увеличилась на 15-20%.

Также приводятся ссылки на материалы, посвящённые отдельным оптимизациям и тестам. В частности, интерес представляет отимизация сборки мусора и уменьшения потребления памяти в отдельной статье "Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning":
http://java.sun.com/javase/technologi...

Другие ссылки приведены по ходу обзора и в его конце.

>>> Подробности

отлично

anonymous
()

А на каком этапе сейчас находится открытие Java под GPL?

Davidov ★★★★
()
Ответ на: комментарий от edw1n

хм. У меня Eclipse на FreeBSD c 1 Гб оперативы и старым Athlon XP 2000+ летает даже на _пятой_ яве. Шестую не пробовал.

Но не уверен, что бы было, если бы у меня было меньше памяти.

P.S. Eclipse CDT не понравился.

xTERM ★★
()
Ответ на: комментарий от edw1n

> Сейчас придут анонимусы, и расскажут, как Java тормозит у них на калькуляторах ))

Athlon AM2 3000+ / 1Gb 667 RAM - калькулятор?

troorl ★★
()

тормозит, не тормозит - какая разница?

всё равно альтернативы нет.

anonymous
()

НУ как, новые способы подсчёта производительности?
код на C уже во сколько раз обгоняет

anonymous
()
Ответ на: комментарий от INFOMAN

> Осмелюсь произнести слово Mono.

не смей! еретик!

anonymous
()

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

anonymous
()
Ответ на: комментарий от xTERM

>Mono тормозит пуще Явы в несколько раз.

+1, но жаба все равно сильно тормозит.

anonymous
()
Ответ на: комментарий от anonymous

не понимаю, откуда такая ненависть к жабе. ведь это наше светлое будущее.

anonymous
()

> более эргономичный параллельный низколатентный сборщик мусора (Concurrent Low Pause Collector);
сча понабегут низколатентные вантузятники и скажут что дотнет лучше явы, и вообще линукс у нас сакс. /me берет лом и ждет их.

AiFiLTr0 ★★★★★
()

Если производительность будет расти такими темпами, скоро Ява будет стабильно решать задачи за отрицательное время o_O

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

> сколько в этих словах снобизма...

Да шутка это, шутка... грустная шутка - я (совершенно ненаучн) мерял время старта Eclipse (+ CDT) на Java 1.5 и 1.6, разницы практически нет, и скорость работы никак ощутимо не изменилась. А тут - такой свист :/

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Зря ерничаете, в тех задачах где используются сеть/БД жаба уже ничем не устапает по скорости тем же дельфям (ананонимусы, которые любят запускать хелловорд на ВсуньСервере, идут в бобруйск). Мое личное впечатление - отставание от нативных вещей 20-30% максимум, что на современном железе практически незаметно (любители запускать эклипс на позорном гнушном поделие gij тоже идут в этот славный город). А в качестве маленького бонуса - полная кроссплатформенность, легкий профайлин, удаленная отладка + бесплатные IDE. А поводу моно, я тут пытался Data Provider для Firebird под моно установить - облом (exe с сетапом не хочет запускаться), а под .Net Framework на 2003 - запустился... Так что переносимость она разная - на уровне языка, на уровне байт кода, на уровня прикладных библотек, особенно проприетарных и/или с нативной жопой (как там насчет WinForms под моно?)

anonymous
()
Ответ на: комментарий от anonymous

> Зря ерничаете

ИМХО, у меня есть причина

> в тех задачах где используются сеть/БД жаба уже ничем не устапает по скорости тем же дельфям

В таких задачах работает в основном "родной" код СУБД и сетевого стека, разве нет?

> А в качестве маленького бонуса - полная кроссплатформенность, легкий профайлин, удаленная отладка + бесплатные IDE

Это всё здорово, никто не спорит. Java - это кладезь тоскливо реализованных хороших идей.

tailgunner ★★★★★
()
Ответ на: комментарий от Bohtvaroh

> всё-таки eclipse - это не pure-java, наверное это может сказываться.

Насколько я знаю, не-pure там только SWT, он при старте почти не работает... и в любом случае, вряд ли его производительность меняется в зависимости от нижележащей Ява-машины.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

>бесплатные IDE

Удивил

>где используются сеть/БД жаба уже ничем не устапает по скорости тем же дельфям

На мой взгляд на сервере может быть даже прирост скорости за счет всякой параллельности, распределения нагрузки и [вставить умные слова]. Я не прав?

xTERM ★★
()
Ответ на: комментарий от tailgunner

> Насколько я знаю, не-pure там только SWT, он при старте почти не работает... и в любом случае, вряд ли его производительность меняется в зависимости от нижележащей Ява-машины.

Так в том-то и дело, при старте что критично? Скорость винта и процессора, оптимизации jre тут мало чем могут помочь, а на скорость отрисовки swt и подавно, итого, eclipse - не то самое приложение, по времени старта которого следует оценивать производительность разных версий явы.

Bohtvaroh ★★★★
()
Ответ на: комментарий от Bohtvaroh

> Так в том-то и дело, при старте что критично? Скорость винта и процессора, оптимизации jre тут мало чем могут помочь

"скорость запуска приложений увеличилась на 15-20%", а?

> eclipse - не то самое приложение, по времени старта которого следует оценивать производительность разных версий явы

Ты не прав, ИМХО: на моем ноуте Eclipse стартует ~17сек, если за это время оптимизации JRE еще не вступают в дело - сколько же времени им надо?

tailgunner ★★★★★
()

Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Ява не тормозит! Аминь.

anonymous
()
Ответ на: комментарий от tailgunner

> "скорость запуска приложений увеличилась на 15-20%", а?

Кроме eclipse что-нибудь сравнивал? Я бы попробовал сравнить скорость запуска, к примеру, jboss, когда тот будет оффициально поддерживать 6-ку.

> Ты не прав, ИМХО: на моем ноуте Eclipse стартует ~17сек, если за это время оптимизации JRE еще не вступают в дело - сколько же времени им надо?

Оптимизации jre не могут оптимизировать скорость работы винта твоего ноута. Сейчас засёк на своём: 7 секунд холодный старт, горячий - не больше 4 с, java 5, eclipse 3.3.1 с кучей расширений. :)

Bohtvaroh ★★★★
()
Ответ на: комментарий от Bohtvaroh

>> "скорость запуска приложений увеличилась на 15-20%", а?

> Кроме eclipse что-нибудь сравнивал? Я бы попробовал сравнить скорость запуска, к примеру, jboss

Я к Яве вообще не имею отношения, использую только Eclipse + CDT + PyDev 8)

> когда тот будет оффициально поддерживать 6-ку.

Как сказал бы бирди, "Wow... so much for portability" ;)

> Оптимизации jre не могут оптимизировать скорость работы винта твоего ноута

Я мерял время "теплого старта", естественно - и Eclipse, и Java должны были быть уже в памяти.

tailgunner ★★★★★
()
Ответ на: комментарий от Bohtvaroh

Олололо, на жаборг.

Azureus на корке не вытягивает больше 6 MByte/s, при этом загрузка cpu 100% и жуткий отжор памяти.
uTorrent на той же системе прокачивает 10 MByte/s не напрягаясь (< 10%).

Угадайте, куда я им предложил после этого засунуть свою жабу?

anonymous
()
Ответ на: комментарий от tailgunner

>Я мерял время "теплого старта", естественно - и Eclipse, и Java должны были быть уже в памяти.

А время на JIT компиляцию ты учел? Может он все это время перегонял байт код в инструкции проца?

anonymous
()
Ответ на: комментарий от tailgunner

>> когда тот будет оффициально поддерживать 6-ку.

> Как сказал бы бирди, "Wow... so much for portability" ;)

Одно дело просто работать (работает), другое - полностью использовать все новые фичи и быть рекомендованным к использованию разработчиками в боевых условиях. Так что не канает.

Bohtvaroh ★★★★
()
Ответ на: комментарий от anonymous

> А время на JIT компиляцию ты учел?

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

> Может он все это время перегонял байт код в инструкции проца?

Может быть. Это одна из моих личных претензий к Яве - то, что она перегоняет байткод в "родной" при кадом запуске приложения в каждой JVM :D

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Во-во. Почему нельзя один раз при инсталляции скомпилировать все свои библиотеки классов? Почему нельзя сохранить скомпилированную из байткода программу? Когда наконец это все будет??? Даже в Parrot это возможно!

xTERM ★★
()
Ответ на: комментарий от xTERM

>Во-во. Почему нельзя один раз при инсталляции скомпилировать все свои библиотеки классов? Почему нельзя сохранить скомпилированную из байткода программу? Когда наконец это все будет??? Даже в Parrot это возможно!

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

anonymous
()
Ответ на: комментарий от anonymous

Какой крест? Я у себя буду иметь откомпилированную прогу, а распространять байткод. В чем проблема?

xTERM ★★
()
Ответ на: комментарий от anonymous

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

Вздор говоришь. Почему нельзя откомпилить при установке или при первом запуске и положить результат куда-нибудь в /var/cache?

ero-sennin ★★
()
Ответ на: комментарий от anonymous

>>Во-во. Почему нельзя один раз при инсталляции скомпилировать все свои библиотеки классов? Почему нельзя сохранить скомпилированную из байткода программу? Когда наконец это все будет??? Даже в Parrot это возможно!

> Потому что это поставит крест на кросплатформенности

Да ни разу это не крест - не распространяй предкомпилированные бинари, включи в JVM невозможность запуска таких бинарей. А вот время старта резко упадет, и потребление памяти - тоже.

tailgunner ★★★★★
()
Ответ на: комментарий от ero-sennin

А я тебя вчера на дваче вычислил.

anonymous
()
Ответ на: комментарий от xTERM

>Какой крест? Я у себя буду иметь откомпилированную прогу, а распространять байткод. В чем проблема?

Ты еще учти, что что жаба выполняется внутри управлемой среды (JVM), ее тоже надо будет включать в экзешник (разумеется в виде библиотек), кроме того опять же придется откомпилировать стандартные библиотеки. И память это штука будет жрать столько же. А все ради того чтобы у кого-то эклипс запустился на несколько секунд раньше... Лично мне JIT не мешает.

И у меня есть сильные подозрения что JIT компилит отнюдь не все, именно с этим связаны оптимизации от версии к версии.

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от anonymous

> Потому что это поставит крест на кросплатформенности. Что касается JIT, то не такое уж это больше неудобство и не такая большая плата за возможность переносить бинарники.
Ничего не поставит. пользователь по прежнему будет запускать class/jar а кэш хранится в /var/cache/java/precompiled
Т.е. если бы работало по аналогии с man который сначала преформатирует доки, а затем выдергивает из cache

ilnurathome
()
Ответ на: комментарий от anonymous

> И память это штука будет жрать столько же

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

> А все ради того чтобы у кого-то эклипс запустился на несколько секунд раньше...

Не у кого-то, а у всех. И не только Эклипс.

tailgunner ★★★★★
()

Все просто. Возьмем Zimbra. Что такое Zimbra? Это - postfix+cyrus+openldap+mysql+fetchmail+spamassassin+dspam+clamav. Плюс, веб морда (отличная морда, лучше не видел), построенная на Java EE (tomcat, lucene и тп). Так вот. Все, что не относится к веб-морде запускается за несколько секунд и запросто вполне успешно может работать на 256 метра. Запуск морды занимает десятки секунд и при этом, отжирает сразу гигабайт. При этом, что вот та вот связка, что веб-морда - это вполне энтерпрайз вещи. То есть способные обслуживать достаточное количество клиентов. Еще раз: сложнейший функционал (не в пример веб-морде) вполне успешно может работать на 256 мегабайтах и запускается за несколько секунд против веб-морды, которая отжирает гектар и грузится десятки секунд. Факты - на лицо. Получи, фашист, гранату!

anonymous
()
Ответ на: комментарий от ilnurathome

>Ничего не поставит. пользователь по прежнему будет запускать class/jar а кэш хранится в /var/cache/java/precompiled Т.е. если бы работало по аналогии с man который сначала преформатирует доки, а затем выдергивает из cache

Еще раз повторюсь - это не даст особого прироста и не сократит используемую память т.к. для исполняемое программы все равно придется реализовывать среду исполнения. Кроме того я не уверен что все можно закомпилить в нативный код, а потом подогнать к этому еще и JVM без костылей (Ведь должен же скомполированный экзешник как то обрабатовать например вызов System.gc из программы, причем делать он это должен так же как исполняемый внутри JVM байт код, а значит там должна быть управляемая среда...)

Это просто себя не окупит, а максимум что даст выигрышь в несколько секунд пре старте. Не ищете проблем там где их нет.

anonymous
()
Ответ на: комментарий от anonymous

> а максимум что даст выигрышь в несколько секунд пре старте

Ты троллишь или серьёзно? Ради этого выигрыша всё и затевается.

Ты знаешь, как работает любой latex? Или pch в любом компиляторе. Вот по такому же принципу можно избавить JVM от повторения одной и той же работы при каждом запуске.

ero-sennin ★★
()
Ответ на: комментарий от anonymous

>Все просто. Возьмем Zimbra. Что такое Zimbra? Это - postfix+cyrus+openldap+mysql+fetchmail+spamassassin+dspam+clamav. Плюс, веб морда (отличная морда, лучше не видел), построенная на Java EE (tomcat, lucene и тп). Так вот. Все, что не относится к веб-морде запускается за несколько секунд и запросто вполне успешно может работать на 256 метра. Запуск морды занимает десятки секунд и при этом, отжирает сразу гигабайт. При этом, что вот та вот связка, что веб-морда - это вполне энтерпрайз вещи. То есть способные обслуживать достаточное количество клиентов. Еще раз: сложнейший функционал (не в пример веб-морде) вполне успешно может работать на 256 мегабайтах и запускается за несколько секунд против веб-морды, которая отжирает гектар и грузится десятки секунд. Факты - на лицо. Получи, фашист, гранату!

Факты чего? Ну вот набежали красноглазики...

А вот мои факты: 1)Hello world - можно запустить в режиме (-Xms1m -Xmx1m) 2)Jetty+Axis2+Xalan+JDBC+Quartz - 13-15m (-Xms20m -Xmx64m) (с томкатом было бы примерно тоже самое) 3)Geronimo+вебмэйл (60 пользователей,~25Гб база) - 60m (в среднем) (-Xmx256m)

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

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.