9 июня 2009 в 01:27

NetBeans в Java Real-Time

Java*
nb
NetBeans — очень удобная для разработчика среда, обычно отпугивающая своей тормознутостью, т.к. громоздка и написана на Яве. Что ж, будем надеятся, что однажды все наладится, а пока посмотрим, как эту ситуацию может исправить Real-Time Java.


Java Real-Time System распространяется(http://java.sun.com/javase/technologies/realtime/index.jsp) по жесткой лицензии с возможностью использовать ограниченное время: версия 2.1 — всего лишь год после установки. На сайте так же доступна и версия 2.2 с ограничением на 90 дней.

JavaRTS для полноценной работы требует Real-Time систему, и доступна для скачивания лишь для ОС Solaris и Linux (real-time патчи к ядру).

В чем же отличие real-time явы от обычной?
— Real-Time нити, планирование и синхронизация
В RTSJ появляется концепция 2-х нитей: real-time и no-heap real-time (которые не могут быть прерваны сборщиком мусора). А так же 28 уровней приоритетов для них.
— Новые схемы управления памятью
— Наносекундная точность времени и таймеров
— Прямой доступ к физической памяти (при сохранении безопасности=))

Однако, для приложений написанных без использования Java Real-Time API, одна из особенностей специфичных именно Яве заключается в работе сборщика мусора. Он выполняется в то время, когда никому не мешает и постоянно прерывается на перепланировку процессов.

Итак, поехали…
Объект испытания: NetBeans 6.5.1

nb

JavaRTS 2.1
bash-3.2$ javarts -version
Java Real-Time System HotSpot(TM) Client VM warning: unable to lock pages into memory
java version "1.5.0_16"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16_Java-RTS-2.1_fcs-b11_RTSJ-1.0.2)
Java Real-Time System HotSpot(TM) Client VM (build 1.5.0_16-b11, mixed mode)


ArchLinux
bash-3.2$ uname -a
Linux hyperion 2.6.29-rt #1 SMP PREEMPT RT Wed Jun 3 17:02:08 MSD 2009 i686 Intel(R) Core(TM) Duo CPU T2450 @ 2.00GHz GenuineIntel GNU/Linux


Все готово, запускаем нашу «непростую» IDE
bash-3.2$ ./netbeans --jdkhome /usr/share/JavaRTS/jrts2.1/

Загрузился NetBeans неожиданно быстро, хотя предсказуемо не спешил при инициализации модулей.

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

Что ж, пока прирост скорости не может не радовать. Попробуем что-нибудь покруче. Я всегда не любил возиться с обновлениями и плагинам лишь из-за долго открытия окна для упраления ими: Tools -> Plugins… И обычно долгая инициализация списка плагинов проходит за примерно указанное в прогресс-баре время — около 5-7 секунд.
Следующая тяжелая вещь: Tools->Options… Все подвисает, меню появляется довольно скоро, но управление мышью возвращается лишь после нескольких секунд.

Использование памяти все это время скачет в пределах от 90 до 130 Мб (по монитору плагина «Java Profiler»), хотя с jdk1.6.0_12 предел обычно около 70 Мб, но здесь, вероятно, большое влияние оказывает использование различных версий Явы (JavaRTS 2.1 собрана на основе jdk1.5.0_16).
Макс Вязников @ha7y
карма
33,0
рейтинг 0,0
Пользователь
Самое читаемое Разработка

Комментарии (42)

  • +4
    6.7 кстати заметно шустрее стала.
  • +1
    вот фигня, только пошел поставить, а версии для win32 нет :(
  • +2
    Потому что Windows — не real-time система, а здесь все запускалось с патченным ядром:
    >2.6.29-rt #1 SMP PREEMPT RT
    • 0
      об этом надо было в статьк написать и подчеркнуть особою А то я уж было подумал что все что надо это «другую» яву поставить.
      • +2
        fixed
    • 0
      Любопытно. А на Ubuntu можно запустить RT Java? Нужно патчить ядро или это в принципе невозможно?
      • 0
        https://wiki.ubuntu.com/RealTime
        Но что-то ребята там долго суетятся, хотя и их можно понять

        Хотя, если использовать в Ubuntu ядро, собранное из исходников, то здесь можно найти актуальные патчи
        ftp://ftp.kernel.org/pub/linux/kernel/projects/rt/
      • 0
        Нужно установить пакет с уже собранным RT ядром, в гугле по «ubuntu RT» много ссылок. Даже на хабр :)
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Можно узнать у тех, кто уже использует:
      www.opennet.ru/opennews/art.shtml?num=15302

      Но на официальном Sun ничего об этом нет =(

      Зато есть бесплатный аналог, который я пока не успел испытать:
      javolution.org/
      • 0
        Это не бесплатный аналог, а просто хорошо написанная библиотека нацеленная на уменьшение сборки мусора. Т.е. объекты переиспользуются, реализуются стандартные интерфейсы с этими либами и все такое прочее. Приятная штука, но только для оптимизации тонких мест.
        • 0
          Прошу прощения — недоглядел:
          «исключены средства сборки мусора, дефрагментации памяти, добавлен собственный класс функций для манипуляции со строками»

          Увлекся чтением доклада с Space2007 об этой библиотеке
          javolution.org/doc/AIAA-2007-6184.pdf
  • +1
    Можно узнать

    • 0
      Попробуйте нажимать наа ссылку «ответить» под комментарием, на который вы хотите ответить.
  • +2
    >с гулом винчестера
    прочитал с гуглом винчестера :)
    • –5
      Поздравляю.
  • +2
    Если целью ставилось ускорение Netbeans, то если объем ОЗУ позволяет можно запускать используя RAM Disk. В линукс системах это делается несколькими коммандами.
    • 0
      Сам нетбинс в RAM скопировать или как?
      • 0
        При запуске скрипта Нетбинс с настройками копируется в рам диск
        , после работы снова копируется на жесткий диск. Описание нашел здесь coffeecokeandcode.blogspot.com/2008/08/netbeans-on-speed.html, но сам не пробовал ибо сижу на Windows и рамдиск в ней надо создавать отдельной программой еще и платной.
        Автор пишет что ускорение интерфейса заметно в сравнении с 10.000rpm VelociRaptor и дает рекомендации по созданию рамдиска.
        • 0
          А нет ли какойто волшебной штуки чтобы всю ОС с программами пихала в рам(я про линух) демон preload есть, но результата заметного нет.
  • 0
    А почему бы не включить сборщик G1 от последней Java 1.6-14? Я так понимаю, что эффект будет аналогичный и работает под всеми ОС.
    • 0
      Ещё можно включить server java — ростёт объём используемого ОЗУ, но также сильно ростёт скорость.
      Короче, странный вы какой-то способ ускорения нашли… но интересный :)
      • 0
        >Ещё можно включить server java
        Спасибо — обязательно попробую

        >Короче, странный вы какой-то способ ускорения нашли… но интересный :)
        Потому и написал об этом =)
        Хотелось посмотреть JavaRTS в деле, а что может быть лучше тяжелой программы, которой пользуюсь чуть ли не каждый день — чувствуется любое изменение производительности. Жаль только, подходящих тестов не нашел, чтобы еще и на цифрах сравнить.
    • 0
      >Я так понимаю, что эффект будет аналогичный и работает под всеми ОС.
      Аналогичный, но только для работы сборщика мусора =)
      • 0
        Дык ведь «Однако, для приложений написанных без использования Java Real-Time API, одна из особенностей специфичных именно Яве заключается в работе сборщика мусора. Он выполняется в то время, когда никому не мешает и постоянно прерывается на перепланировку процессов...» — это именно то, что делает G1. Грубо говоря, вы задаёт объм ОЗУ и процессорное время, которые «не жалко» — а он делает всё возможное в эти рамках :) Чем больше выделите, тем быстрее будет. Плюс, он работает на фоне и приложение практически не тормозится :) Даже сли его просто так включить — эффект получается очень заметный :)
        • 0
          Все верно =)

  • +3
    а кстати, с чем вы сравниваете нетбианс? если с идеей, то согласен, если с эклипсом, то эклипс тормознутее на порядок.
    • 0
      Пользуюсь и NetBeans, и Eclipse (последним гораздо реже). Когда меня спрашивают о том, какую IDE предпочтаю, то тут же удивляются, переводя разговор на производительность Явы.
    • 0
      Хмм, у меня совершенно обратные впечатления, netbeans намного тормозней…
      • 0
        а версию нетбинса, версию жабы, плагины и ось можно узнать? Плюс размеры проекта; нужно учитывать что по умолчанию нетбианс автоматически парсит весь проект, а эклипс только открытые файлы.
        Насчет эклипса: может мне не везло, но не тормозящий эклипс я еще не видел.
        • +1
          Согласен с alexevil, по моим впечатлениям NetBeans тормознутее. Поставил NetBeans 6.5, когда он вышел. Поставил, понравилось, но потом нужно было ещё и js редактировать, часто переключался между скриптами… это был кошмар. Да, машина у меня не самой последней свежести, но тоже ещё бегает ого-го, но… Потом поставил Aptana Studio (считай Eclipse), и что говорится, почувствуйте разницу! Плюс jQuery support!
          • 0
            в netbeans'е кстати тоже jquery поддержка есть.
          • 0
            и снова на мой вопрос не ответили :)
            Eclipse и Netbeans работают как под виндой так и под никсами, плюс куча версий и вариантов.
            аптана, как мне показалось -одна из самых быстрых сборок эклипса для html-php.

            Если накатывать аптану же на стандартный эклипс, то скорость ощутимо падает, не в пример нетбиансу.

            Плюс я так понял, что вы веб разработчик, какую нетбиансу вы накатывали? чисто php или all? плюс сколько файлов у вас было в проекте?

            Мои параметры:
            1) AMD Athlon 3gb win xp sp3: netbeans dev vs eclipse 3.4.2
            2) core 1200 1gb fedora 11 netbeans 6.7 vs zde6
            3) старая машинка на работе 512mb fedora 10 netbeans 6.5 vs eclipce+PDT
            везде нетбианс выигрывает по скорости, в особенности ctr+_
            • 0
              Параметры:
              Intel Core Duo 1,6 2 Гб Windows Vista Businnes SP1
              Пробовал NetBeans 6.5 (только PHP версия), Aptana Studio 1.2 с PHP plugin, Eclipse PDT

              В проекте где — то около 30 скриптовых фалов. Визуально везде были быстрее Aptana и Eclipse. NetBeans постоянно замирал, окно висло… жуть, продуктивность была не очень.
              P.S.: Java вроде 5.0 или 5 с чем — то, не помню, пишу не из офиса.
              До этого, где — то года полтора назад тоже пытался на бинс перейти, но уже по Java профилю, отпугнула тормознутость и тогда.
              • +1
                да, вот в таком раскладе я бинс не тестил, у меня жаба 1.6, попробуйте вместо 5 поставить, может завертится? плюс пробуйте 6.7 :)
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Было бы любоптно увидеть тест другого ява тормоза — RubyMine.
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Прошу прощения за то, что ввел, возможно, всех и Вас в том числе в заблуждение тем, что не упомянул в топике, что статья писалась для души и это был скорее обзор, чем эксперимент.
    Поэтому я не привел никакой статистики производительности, никаких циферок — одни впечатления =)
    Но узнав из комментариев о паре новых для себя способов оптимизации направленных на ускорение работы, я твердо решил померять все в«цифрах» и в Java 5 (для соблюдения более равных условий). Посему, спасибо за ценные поправки — обязательно учту =)
  • 0
    Я всегда не любил возиться с обновлениями и плагинам лишь из-за долго открытия окна для упраления ими: Tools -> Plugins… И обычно долгая инициализация списка плагинов проходит за примерно указанное в прогресс-баре время — около 5-7.
    В каких единицах измеряется время «5-7»? Минутах, секундах?
    • 0
      Секундах, конечно же в секундах =)
  • +2
    Запуск Netbeans с включенным G1 выдает Exception, разработчики пишут «Do not use the IDE with the G1 Garbage Collector»

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.