Russian Qt Forum

Компиляторы и платформы => Windows => Тема начата: Fregloin от Август 04, 2014, 08:49



Название: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: Fregloin от Август 04, 2014, 08:49
собственно вопрос. заметил уже давно и реально напрягает, что в линуксе на одном и том же железе один и тот же проект в одной и той же версии компилятора и qt собирается ровно в два раза быстрее. так же заметил, что в винде при переключении типа сборки с дебага в релиз и обратно часто зависает креатор, иногда с вылетом. это очень угнетает. можно ли как то ускорить процесс сборке в винде?


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: alex312 от Август 04, 2014, 09:10
есть подозрение, что в винде более тормозная работа с файлами. Поэтому и креатор подвисает при смене типа сборки(перечитываются все настройки), хотя не припомню что бы он при этом вылетал (релизные версии)

По поводу сборки, по моему субьективному впечатлению qbs собирает быстрее чем qmake/jom/make, Но его поддержка в креаторе пока не такая хорошая, как для qmake. Практически все надо делать руками .


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: Пантер от Август 04, 2014, 09:33
Для сборки используешь make или jom? Второй быстрее за счет многопоточности.


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: Bepec от Август 04, 2014, 09:57
Есть версия что различается подход :D

Хотя да - даже на малине креатор быстрее чем на винде. С чем связано - ахз :D


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: kuzulis от Август 04, 2014, 10:26
Надо на QBS переходить. Я вот перешел - теперь не парюсь со скоростью сборки.. Да и вообще - удобненько (хотя - да, есть некоторые моментики, но это пустяки).


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: __Heaven__ от Август 04, 2014, 11:19
Кстати, а jom не распространяется на mingw32-make? Он создан только для msvc?
Или же можно повысить скорость сборки и для mingw32-make?


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: Пантер от Август 04, 2014, 11:21
jom из поставки Кьюта, он не зависит от компилятора.


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: __Heaven__ от Август 04, 2014, 11:33
Как его научить использовать мой mingw?
Так понимаю, что нужно добавить в параметры ещё один компилятор (jom) с некими параметрами


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: Пантер от Август 04, 2014, 11:38
В настройках проекта в Креаторе добавляешь этап сборки, там указываешь jom, потом удаляешь этап сборки make.


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: __Heaven__ от Август 04, 2014, 11:44
Заработало.
Каким образом выбирается компилятор, ведь у меня их несколько?
-spec win32-g++ в qmake?


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: Пантер от Август 04, 2014, 11:52
Да, -spec.


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: __Heaven__ от Август 04, 2014, 12:03
спасибо. я стал чуточку умнее  :D


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: xokc от Август 04, 2014, 13:30
Надо на QBS переходить. Я вот перешел - теперь не парюсь со скоростью сборки.. Да и вообще - удобненько.
А QBS уже в состав QtCreator входит или его нужно отдельно качать и устанавливать?


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: alex312 от Август 04, 2014, 13:32
А QBS уже в состав QtCreator входит или его нужно отдельно качать и устанавливать?
Входит, только плагин отключен по-умолчанию


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: __Heaven__ от Август 04, 2014, 14:04
Какие преимущества дает QBS? Из introsucing QBS не понял, для чего это...


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: kuzulis от Август 04, 2014, 16:36
Цитировать
Какие преимущества дает QBS?

Большие.

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

Удобно включать/отключать некоторые части проекта (например некоторыми переменными в проекте и прочее.)
При этом отключенная часть проекта отображается в QtCreator сереньким цветом.

Удобно делать "левые" штуки . Например, в винде можно написать некоторый модуль, который будет подписывать (signing)
нужные екзешни, dll-ки и прочее после их сборки и запаковки в инсталлер, к примеру. (конечно, если подписывание необходимо.
обычно это делают "нормальные" конторы :) ).

Удобно делать инсталляторы, например используя WiX и прочее.

В общем, все гибко и замечательно. Сначала немного непривычно - но потом втягиваешься и начинаешь от Qmake делать буэээ. :).


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: __Heaven__ от Август 04, 2014, 17:02
Спасибо. Интересно.
Пока буду держать в уме, ибо не распространяю проекты  :)


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: navrocky от Август 04, 2014, 19:29
Цитировать
Какие преимущества дает QBS?

Большие.

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

Удобно включать/отключать некоторые части проекта (например некоторыми переменными в проекте и прочее.)
При этом отключенная часть проекта отображается в QtCreator сереньким цветом.

Удобно делать "левые" штуки . Например, в винде можно написать некоторый модуль, который будет подписывать (signing)
нужные екзешни, dll-ки и прочее после их сборки и запаковки в инсталлер, к примеру. (конечно, если подписывание необходимо.
обычно это делают "нормальные" конторы :) ).

Удобно делать инсталляторы, например используя WiX и прочее.

В общем, все гибко и замечательно. Сначала немного непривычно - но потом втягиваешься и начинаешь от Qmake делать буэээ. :).


По сравнению с CMake как оно? Можно ли там делать сложные штуки, типа функций? Есть ли там аналог find-модулей в стандартной поставке?

По теме: По поводу тормознутости компиляции в винде, основная проблема на мой взгляд - это медленная файловая система и медленный запуск процесса. mingw-make порождает кучу подпроцессов в процессе исполнения, виндовое ядро явно не было оптимизировано для этого случая в отличие от unix.

Многопоточная компиляция помогает, но всё равно существенно не дотягивает до скорости компиляции под linux.


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: Bepec от Август 04, 2014, 19:34
По-моему тут простая вещь и не надо хаять винду.

mingw сделан под linux.
MSVC сделан под винду.
В родных системах их скорость максимальна.

А креатор тормозит при любом компиляторе :D


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: kuzulis от Август 04, 2014, 20:17
Цитата: navrocky
По сравнению с CMake как оно?

Ну, попроще, ИМХО. Скажем так: более юзер-френдли, что-ли, более явно тут все (не то что в CMake - боже упаси). Я как-раз таки перевел свой проект из CMake на QBS.
Тоже метался в муках выбора, т.к. на CMake приходилось писать очень много кода. Да и QBS универсальне все-таки, ИМХО.

Перевел также некоторые Embedded под-проекты (основанные на Keil, IAR и пр.).
Чтобы одним махом компилить и собирать в пакеты сразу и Embedded часть и ОС-специфик и пр.  :P

Цитата: navrocky
Можно ли там делать сложные штуки, типа функций?

Да.

Цитата: navrocky
Есть ли там аналог find-модулей в стандартной поставке?

Вроде как аналогом является Probe. Но, кажется, это еще допиливается. Я не использовал еще..


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: kuzulis от Август 04, 2014, 20:25
Цитата: Bepec
А креатор тормозит при любом компиляторе :D

Зато не универсальна твоя студия. Да и что делать, если нет денег на нее? Как ты будешь собирать проект без студийного IDE? :)
А вот, используя QBS + Windows SDK можно собрать все что угодно, не имея всяких студий. И бесплатно - и сердито (конечно, можно и BAT-ники писать - но это не наш путь). :)



Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: Bepec от Август 04, 2014, 21:18
Microsoft Visual C++ (MSVC) — интегрированная среда разработки приложений на языке C++, разработанная фирмой Microsoft и поставляемая либо как часть комплекта Microsoft Visual Studio, либо отдельно в виде бесплатного функционально ограниченного комплекта Visual C++ Express Edition.
Я ответил на ваш вопрос? :)

PS имеется так же пара сайтов которые позволяют собрать любой проект на этом движке, но тут уже исходники отсылать надо :)


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: kamre от Август 05, 2014, 06:25
Тоже метался в муках выбора, т.к. на CMake приходилось писать очень много кода. Да и QBS универсальне все-таки, ИМХО.
А QBS умеет генерировать solution для MSVC, чтобы можно было нормально отладчиком пользоваться (а не тем косячным вариантом, что в QtCreator предлагается)?


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: alex312 от Август 05, 2014, 07:11
Нет, qbs пока не генерирует никаких проектов. Хотя планы есть.


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: navrocky от Август 07, 2014, 21:35
По-моему тут простая вещь и не надо хаять винду.

mingw сделан под linux.
MSVC сделан под винду.
В родных системах их скорость максимальна.

А креатор тормозит при любом компиляторе :D

MSVC под виндой компилит медленнее чем gcc в linux, не помогает ей даже IncrediBuild. Это факт. Mingw, конечно, еще медленнее чем MSVC.


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: Fregloin от Август 18, 2014, 17:38
Я так и понял, что дело в ФС и ядре винды.


Название: Re: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе
Отправлено: Авварон от Сентябрь 02, 2014, 14:13
Погробокопаю

Я так и понял, что дело в ФС и ядре винды.

Дело не столько в ФС (хотя и в этом тоже), сколько в том, что рекурсивные makefile'ы - зло. Спавнить миллион процессов просто ради того, чтобы сделать стат всех файлов в проекте (для того, чтобы понять, что пересобирать) - не самая здравая затея


По сравнению с CMake как оно? Можно ли там делать сложные штуки, типа функций? Есть ли там аналог find-модулей в стандартной поставке?

1) Ф-ии пишутся на JS, как следствие можно сделать очень много всего. Правда, не очень часто надо, только когда пишутся кастомные Рулы/Трансормеры (правила генерации чего-л во что-л, например сгенерить из шаблона app_version_header.in.h хедер app_version_header.h)
2) Аналога find модулей нету и не планируется. Вернее сказать, частичным аналогом являются сами Модули - например зависимость от модуля Qt.core делает примерно то же, что и find_package(Qt* REQUIRED). Однако, для сторонних либ таких модулей нет - предлагается самому прописывать зависимости. Что не очень сложно, на самом деле - в том же линуксе инклюды видятся автоматом, а линкфлаги прописывать не надо (в отличие от цмейка) - достаточно прописать имя библиотеки в пропертю cpp.dynamicLibraries. Вообще, у модулей немножко другое назначение - помимо, собственно, линковки к либам, они (и это и есть основная фича) регистрируют новые Рулы - то, как qbs обрабатывает файлы определенного типа - для .cpp надо вызвать clang, для .ui - uic