![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
serger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 19.6.2007 Где: Ижевск Репутация: 1 Всего: 5 |
Кстати, мне кажется, хоть ОО не java-приложение работа с памятью реализована аналогично.. ?! никому так не кажется?
-------------------- упс! |
|||
|
||||
Lotrex |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 9.2.2006 Где: Казань Репутация: нет Всего: 3 |
По теме:
JOP - Java Optimized Processor - пусть вас не смущает аббревиатура ![]() Идея в том, что можно создать аппаратную java - машину, которая будет непосредственно выполнять байт-код, и сделать это можно на существующей элементной базе - на FPGA. Возможно, тут получится существенное увеличение производительности. |
|||
|
||||
Temdegon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: 7 Всего: 9 |
Вопрос по использованию памяти в java. Есть такой линк Сравнение, где можно сравнить производительность и использование памяти межу разными языками. Сколько не тыркался, java всегда проигрывает по использованию памяти, практически любому языку. Причем не только всяким компилиуемым языкам, но и интерпретаторам, например PHP (Хотя по скорости рвет его в тряпки). Почему так получается? Вроди ПХП лет пять уже не могут 6-ю версию зарелизить, все пользуются пятым, и все нормально работает. А java чуть ли не каждый день выходит новая подверсия, а по управлению памятью проигрывает ПХП? Чем это вызвано? В чем особенности java от тех же rubi, python, C#, PHP?
|
|||
|
||||
kamre |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 24.3.2006 Репутация: 1 Всего: 13 |
Предлагаю к рассмотрению "очередные данные о прожорливости и тормозах Java" в GUI приложениях
![]() Прожорливость и тормоза будем сравнивать относительно Qt4 на довольно простом примере. Смысл сравнения именно с Qt4 состоит в том, что и Qt4 и Java/Swing полностью сами отрисовывают интерфейс внутри окна без использования каких-либо нативных компонент (нативное только главное окно). Был написан аналогичный код на Java с использованием Swing (код см. ниже). Получилось вот так: ![]() Насчет Look&Feel: сразу можно записать в минус Java неправильный default шрифт в JTextArea и неправильную отрисовку меню в неактивном окне. Но самое интересное происходит при ресайзе этих окошек: Qt все делает просто моментально и плавно, а в Java все происходит рывками и с заметным шлейфом от перерисовки рамки окна: ![]() Очевидно, что Java тормозит и явно не успевает перерисовывать содержимое окна при изменении его размеров. В Qt4 таких проблем не наблюдается, рамка окна сразу следует за мышкой и интерфейс внутри окна всегда успевает отрисовываться. Также интересно посмотреть на потребление памяти для такого простого окошка: ![]() Результаты поразительные: Java прожорливее почти в 10 раз чем Qt4, и для отображения этого окна и изменения его размеров позволила себе отожрать больше 100Мб! Неужели это можно назвать разумным потреблением памяти? А вот мой код на Java (возможно я что-то делаю не правильно, укажите на это):
|
|||
|
||||
Temdegon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: 7 Всего: 9 |
По-моему, цифры на скриншоте говорят о том, сколько потребляет виртуальная машина. А сколько памяти использует само приложение можно посмотреть с помощью входящих в JDK jvisualvm.exe или jconsole.exe. У меня эти утилиты показывают примерно 2.5 метра. Хотя я могу заблуждаться по неопытности...
Не поленился, влючил "отображение содержимого окна при перетаскивании". У меня окно ведет себя абсолютно нормально, как и все остальные окна в системе. Не лагает при перетаскивании и во время разворачивания во весь экран и изменения размеров. Хотя я точно помню, что раньше такие проблемы у меня были и меня это жутко раздражало. Скорее всего у меня не лагает из-за того что в винде использую оформление "Windows Classic". Недавно возился с DB-менеджером SQuirreL, написанном на Java. Там тоже ооочень сильно влияло то, какой L&F выбран. Это сообщение отредактировал(а) Temdegon - 27.1.2009, 02:55 |
|||
|
||||
kamre |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 24.3.2006 Репутация: 1 Всего: 13 |
Конечно, цифры говорят именно о том, сколько у системы было забрано ресурсов. Также как и в случае с Qt4, память учтена с ее довольно толстыми загруженными библиотеками. И какая разница сколько потребляет сама JVM, а сколько именно Java программа? В итоге получается какой-то дикий overhead на JVM. Причем для Metal LAF потребление за пределы 35Мб не выходит (это уже нормально при изначальных 30Мб при старте программы).
Конечно, содержимое окна при перетаскивании должно быть включено. И, конечно, с оформлением "Windows Classic" будет работать быстрее, т.к. там рисовать нужно меньше. А вот на стандартных "Windows XP (Blue/Silver/Olive)" темах именно такое поведение как я и описал. |
||||
|
|||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
kamre, для начала ответьте на несколько вопросов.
1. Какая версия Qt: OpenSource или Comercial? Каким компилятором собран пример: VC+ или gcc из MinGW. 2. Какая версия Java? 3. Почему сравниваете только под Windows? Я вот сейчас на MacOS запускал, оба примера смотряться как надо (в плане шрифты там, нативные виджеты, ...). Qt - 11 МБ, Java - 45 МБ. Думается мне, что и на Linux будет примерно тоже самое (вечерком проверу, если время будет). А то, что Java не ахти как работает под Windows - так я абсолютно уверен, что тут без MS не обошлось. -------------------- |
|||
|
||||
kamre |
|
||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 24.3.2006 Репутация: 1 Всего: 13 |
А какая разница, исходники же одни? Использовалась OpenSource Qt 4.4 собранная MSVC 2008 Express.
Потому что Windows XP пока самая распространненая платформа на десктопах и ноутах (да и я буду ее использовать как минимум до тех пор пока новый комп не куплю, чтобы Vista/Win7 нормально ворочались). Про MacOS - ничего не скажу, не видал в живую. А там Java от SUN или от Apple (это совсем разные вещи вроде бы)? А на Linux c моей NVIDIA 7600GS дела с 2D графикой настолько плохи (тормоза-тормоза-тормоза), что он вообще в полном пролете (просто не юзабельно по сравнению с XP). Да и в нем "родной" GTK LAF тоже весьма косячный в SUN JRE. И кстати OpenJDK даже еще больше тормозит, чем SUN. |
||||||||
|
|||||||||
kemiisto |
|
||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
Я к тому, что если писать под Windows - то уж лучше .NET. А если сравнивать Qt и Swing приложения, то уж тогда на всех платформах.
Очень жаль... У меня возможности сейчас посмотреть нету... Но если так дела обстоят, то плохо... ![]()
От Apple.
Да, есть такое... Спору нет. Это сообщение отредактировал(а) kemiisto - 27.1.2009, 15:47 -------------------- |
||||||
|
|||||||
Kallikanzarid |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 9.11.2008 Репутация: нет Всего: 3 |
Почитал тему маленько. ИМХО, хорошо бы проверять в тестах не только простые вычислительные задачи, но и, например, задачи по буфферизованному вводу-выводу, по коллекциям/контейнерам. Особенно меня интересует последний пункт, так как он по-разному реализован в JDK и STL.
Далее, почему в качестве компилятора C++ часто выступает VS6, в то время, как JVM используется последней версии? Давайте использовать либо ICC11, либо VS9, либо GCC. Наконец, любопытно было бы сравнить производительность JVM и LLVM - как разные подходы конкурируют в плане потребления ресурсов. |
|||
|
||||
EJack |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 4.9.2007 Репутация: нет Всего: нет |
Неправильно сравнивать платформу (Java) и библиотеку (Qt) непонятно что конкретно мерим. Это как сравнивать теплое с мягким.
И еще если Java взяла память это далеко не значит что вся память используется - скорее всего это оптимизация в плане для более быстрого выделения памяти и ухот от ее фрагментивности в памяти. Кроме того необходима память для работы сборщика мусора (за удобства надо платить). Добавлено через 1 минуту и 4 секунды А у меня дома ваш пример вообще не тормозит все летает - и работает все на висте все красиво! Добавлено через 7 минут и 51 секунду Да и посмотрите на IDEA достаточно приятная вещь и работает шустро - да там у них вроде свой L&F |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Почему люди только советуют, как надо проводить тесты, но при этом никто их сам не желает создавать? Ну или хотя бы пересобрать уже существующие и прогнать заново? -------------------- 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. |
|||
|
||||
Kallikanzarid |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 9.11.2008 Репутация: нет Всего: 3 |
Как черновой вариант (на С++):
Пример in.txt:
Если кто сделает что-то подобное на Java, используя стандартную библиотеку (не важно, как именно там выводится Complex), можем проверить производительность. |
||||
|
|||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Хотелось бы описание алгоритма:
- входные данные ... - требуется сделать ... - на выходе должны получить ... -------------------- 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. |
|||
|
||||
Kallikanzarid |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 9.11.2008 Репутация: нет Всего: 3 |
Простой бенчмарк:
1) Читаем комплексные числа в двойной список из файла. 2) Сортируем 3) Выводим отсортированный список в другой файл. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |