Какой-нибудь совет для ускорения времени компиляции в Flex Builder 3? - PullRequest
12 голосов
/ 29 августа 2008

Я запускаю Flex Builder 3 на Mac, и по мере роста моего проекта время компиляции становится все длиннее и длиннее. Я использую некоторые SWC-файлы, и кода довольно много, но на их сборку и аварийное завершение ежедневно не уйдут минуты, не так ли?

Ответы [ 14 ]

10 голосов
/ 14 апреля 2010

Прежде всего, комментарии к некоторым ответам:

  1. Нет необходимости явно указывать -incremental во Flex Builder, поскольку он по умолчанию использует инкрементную компиляцию.

  2. -keep-генерируемый-actionscript является фактором снижения производительности, поскольку он дает указание компилятору записывать коды AS3, сгенерированные для компонентов MXML, в середине компиляции. Файловый ввод / вывод в середине компиляции означает ненужные паузы и низкую загрузку ЦП.

  3. -optimize замедляет связывание, поскольку инструктирует компоновщику создавать меньшие SWF-файлы. Обратите внимание, что -optimize = true | false не влияет на создание SWC, поскольку SWC являются библиотеками и должны быть неоптимизированы.

  4. Я редко связываюсь с настройками JVM, потому что JVM хорошо знает свою работу и довольно хорошо настраивается во время выполнения. Большинство людей усугубляют ситуацию, устанавливая различные параметры настройки ГХ. Тем не менее, есть 3 настройки, которые большинство людей понимают и правильно устанавливают для их использования:

-Xmx (максимальный размер кучи)

-сервер или -клиент (сервер HotSpot или виртуальная машина клиента)

-XX: + UseSerialGC или -XX: + UseParallelGC (или другой несерийный GC)

-server постоянно превосходит -client примерно на 30% при запуске компилятора Flex. -XX: + UseParallelGC включает параллельный сборщик мусора. идеально подходит для многоядерного компьютера и когда на компьютере все еще есть свободные циклы ЦП.

Вы также можете проверить демон компилятора HellFire (http://bytecode -workshop.com / ). Он использует несколько процессорных ядер для одновременной компиляции нескольких приложений Flex. Вы также можете запустить компилятор на втором компьютере через сокеты (при условии, что на втором компьютере более быстрые процессоры и больше памяти).

На мой взгляд, используйте больше модулей, чем библиотек, и используйте HFCD.

Надеюсь, это поможет.

-Clement

8 голосов
/ 29 августа 2008

Нет необходимости использовать mxmlc в командной строке, чтобы иметь возможность добавлять флаги компилятора. Щелкните правой кнопкой мыши свой проект в Flex Navigator, выберите «Свойства», а затем «Flex Compiler» в появившемся диалоговом окне. Там вы можете добавить любые дополнительные флаги компилятора.

Не уверен, что есть очень много дел, хотя, больше кода означает больше времени компиляции, так оно и есть. Если вы не делаете сборку релиза (или как она называется в Flex Builder), маловероятно, что ваши настройки компилятора включают optimize для начала. Лучше выбрать следующие варианты: -incremental (который перекомпилирует только измененные части) и -keep-generated-actionscript (который не дает компилятору удалять файлы ActionScript, созданные им из файлов MXML вашего приложения).

Я очень предпочитаю использовать mxmlc в командной строке (посредством Ant) по сравнению с Flex Builder. Хотя я не думаю, что последний компилируется медленнее, он кажется более медленным во всех отношениях. Использование Ant также позволяет делать больше, чем просто компиляцию при сборке, и условную компиляцию (компилировать SWF или SWC только в том случае, если исходный код действительно изменился). Проверьте мой блог для получения дополнительной информации об этом.

Вы можете попробовать Flex Compiler Shell , еще один инструмент командной строки, который может ускорить процесс. По сути, он пытается сохранить как можно больше памяти между сборками, поэтому не нужно ждать запуска JVM (компилятор Flex является Java-приложением). С другой стороны, это как раз то, что делает Flex Builder.

5 голосов
/ 16 сентября 2008

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

Щёлкните по проекту в представлении навигатора и выберите «Закрыть несвязанные проекты».

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

микрофонные камеры

mesh@adobe.com

4 голосов
/ 26 октября 2009

Я создал RAM Disk с рабочей областью, и это дает до 10% лучшего времени компиляции. Не много, но что-то.

4 голосов
/ 29 августа 2008

Медленное время компиляции чаще всего вызвано наличием большого количества встроенных ресурсов ([Embed] или @Embed).

Вариант 2 этой статьи может помочь вам: [http://www.rogue -development.com / blog2 / 2007/11 / slow-flex-builder-compile-and-refresh-modules-modules /]

2 голосов
/ 16 января 2009

Вы хотите по крайней мере 4 гигабайта на вашем компьютере, если это возможно, и не забудьте переопределить настройки памяти по умолчанию, которые eclipse / flexbuilder дает приложению.

Если вы не уверены, как это сделать, вы можете найти приложение flexbuilder в / Applications, щелкните правой кнопкой мыши и выберите «Показать содержимое пакета». Затем перейдите в файл содержимого и отредактируйте файл eclipse.ini. Отредактируйте этот файл с настройками памяти как минимум:

-vmargs -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=128m 

Также стоит зайти в настройки eclipse / flexbuilder и установить флажок «Показать состояние кучи» в Windows-> Preferences-> General (это затмение с плагином FB, я полагаю, что автономный FB).

Это показывает текущую память в правом нижнем углу окна и имеет маленький значок корзины, чтобы вы могли форсировать сборку мусора.

Я бы также предложил отключить автоматическое построение проекта при изменении ваших файлов (вы можете принудительно создать сборку с помощью cmd-B).

У нас был огромный проект с несколькими файлами модулей, и производительность в FlexBuilder 3 была приличной с этими шагами.

1 голос
/ 17 декабря 2010

В SDK 4.x.x появилась глупая ошибка (см. Adobe bugsystem, выпуск FB-27440), из-за которой проекты с метаданными SVN или CVS компилируются гораздо медленнее, чем с SDK 3.x.x. О том, как это можно исправить, см. здесь .

1 голос
/ 15 августа 2010

Как сказал Клемент, используйте демон компилятора HellFire. Если у вас есть несколько модулей и больше процессорных ядер на вашем компьютере, он может скомпилировать их параллельно. Другой вариант - использовать IntelliJ (коммерческая версия), которая предлагает ту же функцию.

1 голос
/ 04 ноября 2009

Я всегда отключаю «автоматическую компиляцию» для Flex. Он слишком много компилируется, занимает слишком много времени и поэтому прерывает мою работу.

Если у вас много разных файлов проекта, и все они должны быть перекомпилированы, но у вас также есть другие открытые проекты, и вы не хотите закрывать их всегда, когда вы делаете сборку, вы также можете использовать Eclipse Working Sets.

К сожалению, Flex Navigator по умолчанию не поддерживает рабочие наборы. Но вы можете открыть Package Explorer с помощью Window / Show View / ... . Нажмите на маленькую белую стрелку вниз вверху и выберите Элементы верхнего уровня: рабочие наборы . Затем вы можете добавить рабочие наборы (или группы проектов). Каждый проект должен быть хотя бы в одном рабочем наборе (по умолчанию «Другие проекты»), но может быть в нескольких.

Теперь с Project / Build Working Set / ... вы можете поручить Eclipse построить все проекты в этом рабочем наборе, но ни один из остальных. Это особенно полезно, если вы подозреваете, что ссылки на ваш проект иногда прерываются - в противном случае сборка самого верхнего проекта должна автоматически запускать последующие сборки.

1 голос
/ 15 января 2009

Перейдите в Проект-> Свойства-> Приложения Flex. Все перечисленные приложения компилируются каждый раз (даже если у вас есть набор по умолчанию). Если вы удалите все, кроме по умолчанию (не волнуйтесь, он не удалит реальные файлы), он только скомпилирует приложение по умолчанию. Это привело к значительному ускорению для меня. Если вы изменяете приложение по умолчанию, оно добавляет его в список приложений Flex - добавляя к вашему времени компиляции. Вам нужно будет поддерживать этот список, чтобы получить самую быструю компиляцию.

...