Как ускорить Scala IDE?

Я работаю с довольно большим проектом, управляемым SBT (время полной перекомпиляции 150+ секунд). Я использую последний плагин Scala IDE (4.0.0-M1), и я с трудом могу редактировать любой достаточно большой исходный файл - каждый раз, когда я что-то печатаю, eclipse полностью зависает на пару секунд. То же самое происходит, когда я сохраняю свои изменения. Также кажется, что редактирование файла вызывает все более сильное снижение производительности. Перезапуск Eclipse помогает, но ненадолго. Чтобы обойти это, мне нужно открыть исходный файл .scala в текстовом редакторе через Eclipse, теряя все преимущества редактора Scala.

Дополнительная информация

ПК достаточно хорош - Intel Core i5-3570 с 16 ГБ ОЗУ

Я использую Windows 7 x64, Scala 2.10.3, SBT 0.13.1 и Oracle JDK 1.7.0u45

Использование профилирования с помощью Java VisualVM показывает, что, по-видимому, ЦП используется компилятором представления Scala: Вывод Java VisualVM

Индикатор состояния кучи Eclipse никогда не выходит за пределы половины.

Автоматическая сборка, неявное выделение и отметка вхождений отключены.

Конфигурация из eclipse.ini (3 последних флага добавляются из http://scala-ide.org/docs/current-user-doc/advancedsetup/index.html):

-vm
D:\ProgramFiles\Java\jdk1.7.0_45\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Xms1024m
-Xmx2048m
-Xss1M
-XX:MaxPermSize=1024M
-server
-XX:+DoEscapeAnalysis
-XX:+UseConcMarkSweepGC
-XX:+UseCompressedOops

person Alex Abdugafarov    schedule 30.04.2014    source источник
comment
Ни один. Просто юмор. Не о чем так расстраиваться!   -  person Saif Asif    schedule 30.04.2014
comment
Если это поможет, у меня точно такая же проблема; пока нет ответов, к сожалению, я использую IDEA, пока это не будет устранено (надеюсь, в ближайшее время).   -  person Shookit    schedule 09.05.2014
comment
Самый простой способ отладить подобные проблемы с производительностью - использовать svelto. Это автоматически сбрасывает потоки, когда поток пользовательского интерфейса перегружен. Затем следите за сообщениями scala-ide-dev список.   -  person Iulian Dragos    schedule 22.05.2014
comment
Спасибо, Юлиан! Я создал билет Assembla.com/spaces/scala-ide/ support / Tickets / 1002129 и разместил сообщение в этом списке рассылки (еще не утверждено)   -  person Alex Abdugafarov    schedule 27.05.2014


Ответы (6)


Для потомков. Виной всему был плагин Mylyn, который пытался получить точную информацию о том, что находится под курсором при каждом нажатии клавиши и в потоке пользовательского интерфейса. Для получения дополнительной информации см. Билет # 1002129.

person Iulian Dragos    schedule 03.07.2014

Я не пробовал новую IDE Scala Eclipse, но сделал выбор -Xms2g -Xmx8g год назад. Я использовал его для большого, но не огромного проекта на Mac i7quad / 8GB, и все же он был медленным ...

В конце концов я решил компилировать только после сохранения файла.

Так что, возможно, вам стоит попробовать эти:

  • увеличьте размер кучи, как указано выше
  • попробуйте вариант -d64, если он существует на вашей платформе
  • снимите флажок «Сообщать о проблемах по мере ввода» («Настройки»> «Java»> «Редактор»).

что касается последнего, я не уверен, как и отключает ли это компилятор представления; но это, конечно, не так сильно.

person eruve    schedule 30.04.2014
comment
Расскажите, пожалуйста, как отключить компилятор презентаций в Scala IDE? - person Alex Abdugafarov; 30.04.2014
comment
Похоже, -d64 и увеличение размера кучи действительно помогли, спасибо! Снятие флажка «Сообщать о проблемах по мере ввода» еще лучше, но двух предыдущих мне кажется достаточно, чтобы работать без особого дискомфорта. - person Alex Abdugafarov; 30.04.2014
comment
Имеет ли это? Похоже, плагин Scala IDE за последний год действительно улучшился :) - person eruve; 30.04.2014
comment
К сожалению, этот эффект временный - чем дольше я редактирую файл, тем медленнее становится. Перезапуск Eclipse сбрасывает медленность. - person Alex Abdugafarov; 30.04.2014

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

Расходящиеся имплициты иногда являются причиной того, что тайминги проверки типов становятся огромными. Вы пробовали компилировать с Xlog-implicits? Вы также можете использовать функции IDE, чтобы отметить неявное использование в вашем коде.

person Francois G    schedule 30.04.2014
comment
У меня действительно есть изрядное количество неявных преобразований и аргументов (около 200 в файле, с которым я сейчас работаю), но это не похоже на вескую причину для остановки редактора в середине чего-либо. - person Alex Abdugafarov; 30.04.2014

Попробуйте сообщество intellij (не нахальный ответ). Он работает быстрее, чем Eclipse. Кроме того, даже в intelliJ мне иногда приходится разделять файлы, когда они становятся слишком большими для среды IDE.

person sksamuel    schedule 30.04.2014
comment
У меня еще не было такой возможности, но мои друзья также сказали мне, что им это нравится. Однако для небольших кодовых баз мне нравится jEdit, который неплохо поддерживает подсветку синтаксиса Scala; и потому, что сейчас мне не нравится использовать sbt из командной строки. - person eruve; 30.04.2014
comment
Я использую Eclipse более 4 лет, и переход на IDEA сейчас еще больше снизит мою продуктивность. Спасибо за совет, я рассмотрю его позже. - person Alex Abdugafarov; 30.04.2014

Вы можете отключить автоматическое построение. В меню снимите флажок Project > Build Automatically.

Каждый раз, когда вы сохраняете исходный файл, Eclipse будет сохранять ваш файл, но не будет пытаться создать рабочую область, как если бы эта опция была отмечена.

Чтобы принудительно выполнить сборку, нажмите Ctrl - B или Cmd - B на Mac. Если вы используете представление проблем, есть 2 класса проблем - те, которые требуют сохранения, и те, которые требуют сохранения + перекомпиляция. Итак, если вы видите, что проблема не исчезает после сохранения, но считаете, что это больше не должно быть проблемой, просто выполните восстановление.

Это то, что я делал в Eclipse при разработке больших Java-проектов до SSD и многоядерных процессоров.

person user1366367    schedule 15.11.2015

С рекомендуемой по умолчанию конфигурацией я просто удаляю плагин «рекомендации кода» и возвращаю «Триггеры автоматической активации для java» только на «.». Теперь он работает намного быстрее.

person du00    schedule 26.03.2015