2015-04-18 8 views
7

Я перенес свой проект grunt в ember-cli, я обнаружил, что время от модификации файла до завершения liveload было таким длинным, около 10 минут.Почему ember-cli настолько медленный

После того, как я установил ember-cli-windows, ember-cli-windows-addon, не было получено никаких очевидных подсказок. Ниже приведен один пример вывода после уголек-CLI-окон, установлены Ember-кли-окна-аддон:

file changed routes\services.js 

Build successful - 382781ms. 

Slowest Trees         | Total 
----------------------------------------------+--------------------- 
Babel           | 82175ms 
Concat: Vendor        | 75980ms 
Funnel: App JS Files       | 57393ms 
JSHint app- QUnit        | 49491ms 
ES6: App Tree         | 41827ms 

Slowest Trees (cumulative)     | Total (avg) 
----------------------------------------------+--------------------- 
Babel (2)          | 82394ms (41197 ms) 
Concat: Vendor (1)       | 75980ms 
Funnel: App JS Files (1)      | 57393ms 
JSHint app- QUnit (1)       | 49491ms 
ES6: App Tree (1)        | 41827ms 

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

Я использую окна 7.

ответ

22

Вы спрашиваете

Почему уголек-кли настолько медленно

Это не Ember-кли само по себе, что это медленно, это Брокколи , Причины включают:

  1. Брокколи копирует файлы вместо символической ссылки под Windows. Чтобы этого избежать, запустите свои сборки в командной строке с правами администратора.

  2. Брокколи интенсивно работает на диске. Чтобы решить эту проблему, получите SSD.

  3. Брокколи интенсивно обрабатывается процессором. Чтобы решить эту проблему, получите более быструю машину (желательно не Windows).

  4. Брокколи создает огромное количество временных файлов в tmp, что может замедлить производительность. Чтобы решить эту проблему, время от времени очищайте tmp.

  5. Брокколи, как известно, по своей сути медленно. Вы можете найти соответствующие вопросы на сайте брокколи. Чтобы решить это, дождитесь, когда люди брокколи рассмотрят проблемы производительности, которые находятся в их дорожной карте. Существенные улучшения уже сделаны, поэтому обновляем до последней версии всего.

  6. Брокколи восстанавливает все снова и снова, включая вещи, которые не менялись. Чтобы решить эту проблему, вручную настройте процесс сборки, чтобы исключить определенные вещи и сделать их вручную по мере необходимости. Например, предположим, что вы подключаете внешний JS-пакет размером 200 КБ через беседку, а app.import - в свой Brocfile.js. В качестве временного рабочего процесса и чтобы убедиться, что это имеет значение, удалите этот файл из мира Broccoli и загрузите его непосредственно в index.html. То же самое относится к большим файлам CSS.

  7. Брокколи запускает babel в стандартной установке. Вавилон не так уж медленный, но на это требуется время. Чтобы решить эту проблему, если вы не используете синтаксис ES6, удалите зависимость babel.

  8. Ваш антивирус может пытаться сканировать тысячи файлов, созданных Брокколи. ember-cli-windows касается этой проблемы только для Защитника. Если вы используете другой антивирусный пакет, чтобы решить эту проблему, добавьте свой каталог dev в список мест для пропусков.

Для справки, у меня есть небольшой проект Ember я строю в Ubuntu Virtual Box VM с ОС Windows хостом на быстрой машине с SSD, и строит занимает 2-3 секунды.

Возможно, вы также захотите рассмотреть вопрос об этом в списке ember-cli. Вы также можете выбрать другую структуру, которая не запекается в незрелой и неэффективной системе сборки.

+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. –

+2

@MohitJain Huh? Вопрос заключался в том, почему «ember-cli» так медленно. Мой ответ затрагивает семь разных причин и предоставляет способы борьбы с ними. Какой ответ вы бы назвали «ответом»? Во всяком случае, я отредактировал свой ответ. –

+0

Спасибо всем! Даже я запускаю cmd как администратор и опустошаю весь каталог tmp, время, затраченное на это, существенно не уменьшилось. Как ваш совет по изменению более быстрой машины с SSD, я думаю, что это сложнее сравнивать с отказом от ember-cli! – kiford

4

Для пользователей Windows необходимо правильно включить символические ссылки. Поскольку наши друзья в Microsoft фактически являются активными пользователями как ember, так и ember-cli. Они предоставили аддон, который делает именно это.

См.: http://ember-cli.com/user-guide/#windows для получения более подробной информации. Для всех пользователей см: https://github.com/ember-cli/ember-cli/blob/master/PERF_GUIDE.md

[Update]

В течение последних 6 месяцев несколько крупных улучшений производительности высадились, некоторые видят один или два порядка величины улучшений (очевидно, это зависит от ряда факторов ...)

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

Для тех, кто в настоящее чувство, как они видят меньше оптимальной производительности, позвольте мне рекомендовать это руководство: https://github.com/ember-cli/ember-cli/blob/master/PERF_GUIDE.md

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


Подсистема Windows Linux также, похоже, работает очень хорошо!

0

Лучшее решение для устранения проблем с производительностью в Windows - это использование Ubuntu (или любого другого Linux-файла) на виртуальной машине, а в нем - работающий ember, с использованием NFS для обмена папками с хостом.

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

Смежные вопросы