Название: Время компиляции. Отправлено: Tam-Tam от Ноябрь 14, 2007, 00:19 Сборка любого проекта занимает нереально большое время. Для примера - простенькие примерчик с показаной одной лейблой занимает 8! секунд. Проект чуть более примитива собирается более минуты. Кто-нибудь может сказать, это проблема чего - настроек, Qt, железа, положения звезд иль чего-нибудь еще ?
Название: Re: Время компиляции. Отправлено: pastor от Ноябрь 14, 2007, 00:35 Какая платформа, компилятор, Qt?
Название: Re: Время компиляции. Отправлено: QCasper от Ноябрь 14, 2007, 00:40 Какая платформа, компилятор, Qt? Процессор, память?P.S.: Код: #include <qapplication.h> 4 секунды. CPU Intel Celeron 1.7, RAM DDR-2100, OS Win XP Pro SP2, msvc-2005 (vc++ express), Qt 4.3.2 Open Source. Название: Re: Время компиляции. Отправлено: pastor от Ноябрь 14, 2007, 00:44 Пример который привёл QCasper у меня компилиться менее чем за 1 сек
CPU Intel Core 2 Quad Q6600, RAM DDR2-800 2Гб, OS Win XP Pro SP2, VS2005 + SP1, Qt 4.3.2 commercial Название: Re: Время компиляции. Отправлено: Tam-Tam от Ноябрь 14, 2007, 00:51 Код: #include <QApplication> 8 секунд Sempron 1100 MHz память 512м ХР g++ Qt 4.3.2 Open Source. Название: Re: Время компиляции. Отправлено: QCasper от Ноябрь 14, 2007, 00:53 Кстати на скорости компиляции еще очень хорошо сказывается использование precompiled headers, у меня время компиляции проекта в 20 с лишним тысяч строк упало с 13 минут до 4-х с половиной. Но это актуально только для проектов, где встречаются (желательно довольно часто) модули, состоящие из не очень маленького количества исходных файлов. Хотя бы больше трех, тогда уже более менее чувствуется.
Название: Re: Время компиляции. Отправлено: QCasper от Ноябрь 14, 2007, 00:55 8 секунд Sempron 1100 MHz память 512м ХР g++ Qt 4.3.2 Open Source. Ключевые слова здесь g++ и Sempron 1100. Объем памяти большой роли не играет. Название: Re: Время компиляции. Отправлено: Tam-Tam от Ноябрь 14, 2007, 01:00 Ключевые слова здесь g++ и Sempron 1100. Объем памяти большой роли не играет. А подробнее ? Пути решения ? Название: Re: Время компиляции. Отправлено: pastor от Ноябрь 14, 2007, 01:04 А подробнее ? Пути решения ? Можно попробывать перейти на VS 2005 Express. Компилятор в ней пошустрее Название: Re: Время компиляции. Отправлено: QCasper от Ноябрь 14, 2007, 01:09 А подробнее ? Пути решения ? У меня с g++ тот же пример - 6 секунд. Поэтому пути решения: 1. Перейти на msvc 2. Купить комп как у pastor'a. Хотя бы процессор ;) Название: Re: Время компиляции. Отправлено: QCasper от Ноябрь 14, 2007, 01:15 Кстати на скорости компиляции еще очень хорошо сказывается использование precompiled headers, у меня время компиляции проекта в 20 с лишним тысяч строк упало с 13 минут до 4-х с половиной. Но это актуально только для проектов, где встречаются (желательно довольно часто) модули, состоящие из не очень маленького количества исходных файлов. Хотя бы больше трех, тогда уже более менее чувствуется. Да, забыл добавить, также на скорости компиляции отрицательно сказывается использование директив #include в *.h файлах, поэтому там, где это возможно, предпочтительно объявлять указатель на объект, тогда можно обойтись без использования директивы #include в *.h файле, достаточно будет включить её в *.cpp файл, например: Код: #include <qwidget.h> данный код лучше заменить так: Код: #include <qwidget.h> Как видно, от одного включения, а именно #include <qwidget.h> избавиться таки не удалось, но тем не менее там где это возможно, это рекомендуется делать. Название: Re: Время компиляции. Отправлено: Tam-Tam от Ноябрь 14, 2007, 01:31 Можно попробывать перейти на VS 2005 Express. Компилятор в ней пошустрее Много сам компилятор без среды занимает ? Название: Re: Время компиляции. Отправлено: QCasper от Ноябрь 14, 2007, 01:34 Много сам компилятор без среды занимает ? может быть и нет, но я без среды не нашел, если только самостоятельно выкроить его оттуда. Со средой и всем необходимым для установки (типа дот нет 2 и виндовс инсталлер 3) - примерно сто метров. Название: Re: Время компиляции. Отправлено: Tam-Tam от Ноябрь 14, 2007, 02:47 Можешь выложить или кинуть линк в ПМ ?
Название: Re: Время компиляции. Отправлено: Sergey B. от Ноябрь 14, 2007, 06:48 1. На платформе Windows используйте VC++ Express- компилятор быстрее раз в 5, чем g++ .
2. По возможности используйте PCH! http://lestornqt.blogspot.com/2006/08/pch.html (http://lestornqt.blogspot.com/2006/08/pch.html) Название: Re: Время компиляции. Отправлено: QCasper от Ноябрь 14, 2007, 10:32 Можешь выложить или кинуть линк в ПМ ? Могу, но только вечером. И это... там 137Mb оказывается, я про SP1 забыл. P.S. что такое ПМ? :) Название: Re: Время компиляции. Отправлено: Sergey B. от Ноябрь 14, 2007, 12:53 И не забудь ещё про http://thehotfixshare.net/board/index.php?showtopic=4359 (http://thehotfixshare.net/board/index.php?showtopic=4359) (23Мб) иначе после установки SP1 получишь это - http://lists.trolltech.com/qt-interest/2007-06/thread01177-0.html (http://lists.trolltech.com/qt-interest/2007-06/thread01177-0.html).
Название: Re: Время компиляции. Отправлено: Tam-Tam от Ноябрь 14, 2007, 19:16 Могу, но только вечером. И это... там 137Mb оказывается, я про SP1 забыл. Ничего. Главное линк. P.S. что такое ПМ? :) private message Название: Re: Время компиляции. Отправлено: span от Ноябрь 16, 2007, 15:06 1)
Цитировать может быть и нет, но я без среды не нашел, если только самостоятельно выкроить его оттуда. Со средой и всем необходимым для установки (типа дот нет 2 и виндовс инсталлер 3) - примерно сто метров. а cl.exe и nmake.exe не достаточно разве? 2) Кстати, а как влияют на время компиляции и сборки (а если кто в курсе - то и на скорость работы) такие факторы:
Название: Re: Время компиляции. Отправлено: SerjVarshavskiy от Ноябрь 16, 2007, 17:17 прикрутить бы make со своими target в линухе
что б то, что скомпилено и не изменялось не компилило по второму кругу всякие там *.o руки ещё не дошли, поэтому не знама реально ли Название: Re: Время компиляции. Отправлено: QCasper от Ноябрь 16, 2007, 18:02 а cl.exe и nmake.exe не достаточно разве? Поставьте чистую винду, распакуйте архив с Qt, скопируйте на диск только cl и nmake, и попробуйте что-нибудь собрать ;) Название: Re: Время компиляции. Отправлено: Swappp от Ноябрь 16, 2007, 18:21 прикрутить бы make со своими target в линухе Не понял, а в чем проблема? Так с make всегда и происходит, будь то nmake или gmake (GNU). qmake в свою очередь более менее нормально генерирует Makefile.что б то, что скомпилено и не изменялось не компилило по второму кругу всякие там *.o руки ещё не дошли, поэтому не знама реально ли Название: Re: Время компиляции. Отправлено: SerjVarshavskiy от Ноябрь 17, 2007, 18:47 что-то не ощутил нормальности в авто создании Mаkefile
сломя голову компилит заного весь код/классы/либы, хотя изменил совсем чуток Название: Re: Время компиляции. Отправлено: Swappp от Ноябрь 17, 2007, 23:38 что-то не ощутил нормальности в авто создании Mаkefile Совсем чуток, это случайно не .h который инклудится во все? :) Что под linux, что под win с mingw у меня компилит только то, что нужно.сломя голову компилит заного весь код/классы/либы, хотя изменил совсем чуток Название: Re: Время компиляции. Отправлено: SerjVarshavskiy от Декабрь 07, 2007, 13:01 ну естестно это не инкюженый во всё h
кстати, под linux на core 2 Due при компиляции использует только одно ядро ??? может есть какие-то "рычаги" для задействования всей мощи проца? Название: Re: Время компиляции. Отправлено: DsTr111 от Декабрь 07, 2007, 14:35 Раньше пользовался i686 линуксом, недавно перешел на x64. Скорость компиляции увеличилась конкретно.
Также запускал вижуальные си в vmware, там все компилировалось несравненно медлее, даже по сравнению с i686. Хотя сравнивать тут трудно(все-таки си в эмуляторе, г++ - в живую), но у меня в голову не лезет, как может работать какая-то поделка M& быстрее поделки GNU... Название: Re: Время компиляции. Отправлено: pastor от Декабрь 07, 2007, 14:45 ...но у меня в голову не лезет, как может работать какая-то поделка M& быстрее поделки GNU... Вы имеене ввиду GCC и компиль от M$? Название: Re: Время компиляции. Отправлено: Mikor от Декабрь 07, 2007, 14:47 А вот Visual Studio если в солюшне больше одного проекта, собирает по проекту на каждом ядре (в т.ч. Intel-HT). DsTr111 а вы видели как поделка от Intel собирает тот же Qt? Побыстрее чем MS и GNU :)
Конечно на x64 будет быстрее, Itanium всё-таки )) на сервере всё хорошо компилируется... Название: Re: Время компиляции. Отправлено: DsTr111 от Декабрь 07, 2007, 14:59 Цитировать А вот Visual Studio если в солюшне больше одного проекта, собирает по проекту на каждом ядре (в т.ч. Intel-HT). DsTr111 а вы видели как поделка от Intel собирает тот же Qt? Побыстрее чем MS и GNU Smiley Конечно на x64 будет быстрее, Itanium всё-таки )) на сервере всё хорошо компилируется... А под линь он есть? Если есть - дай плз ссылку где можно о нем почитать. И у меня процессор интеловский, но не двух ядерный. Но ОСь определяет как два(у людей спрашивал, говорят используется спецовая технология, уже устаревшая, которая как бы эмулирует двухъядерность).В этом случае компилер от интела даст "+"? pastor, да GCC и компиль от M$. Просто я так понимаю: в M$ выделено несколько человек, которые пишут с++ компилятор к студии, сами баги ищут, сами исправляют. А над g++(в составе gcc) трудятся постоянно несколько человек и + "крутые" программисты, заметив какую-либо багу - исправят ее, ну или найдя способ ускорить компиляцию - ее ускорят, а в закрытом софте такие фокусы не пройдут =)[imho] Название: Re: Время компиляции. Отправлено: pastor от Декабрь 07, 2007, 15:20 Ну я бы не назвал GCC бы подделкой. имхо, самый лучший компилятор. Не без изъянов, но лучший. А подделка это компиль M$. У него слабое саблюдение стандарта, очевидные ошибки и предупреждения не замечает. имхо они ваще не развивают компилятор для С++ т.к. заняты С#\NET. Насчёт интела, компиль впринципе неплохой (последнию версию которую я юзал была 8). Осталось от него одно впечатление - компилит все, что не смогли скомпилить GCC и M$. Причем код юыл явно не работоспособным (были даже такие случаи) :))) Возможно в современных Интел компилятарах нет такой фичи ))))
Название: Re: Время компиляции. Отправлено: pastor от Декабрь 07, 2007, 15:25 А под линь он есть? Да, есть. http://www.intel.com/cd/software/products/asmo-na/eng/compilers/277618.htm Название: Re: Время компиляции. Отправлено: Racheengel от Декабрь 07, 2007, 22:17 из моего опыта, все что съедает GCC, съест и М$, а вот Интел намного более привередлив к коду...
Название: Re: Время компиляции. Отправлено: pastor от Декабрь 07, 2007, 23:01 ну естестно это не инкюженый во всё h кстати, под linux на core 2 Due при компиляции использует только одно ядро ??? может есть какие-то "рычаги" для задействования всей мощи проца? смотрим в строну make - j <number> Я на 4х ядерном юзаю опцию make - j 8 Время компиляции уменьшилось в 3 раза! Название: Re: Время компиляции. Отправлено: Tonal от Декабрь 08, 2007, 16:32 из моего опыта, все что съедает GCC, съест и М$... Если не рисовать ссложных макросов, на использовать long double...А наоборот тоже плохо - М$ очень вольно обходится с некоторыми шаблонными конструкциями. Кроме того, STL у них разный - так что в некоторых тоже местах налететь можно. Ну и расширения языка существенно разные. Название: Re: Время компиляции. Отправлено: Swappp от Декабрь 08, 2007, 17:05 Цитировать Конечно на x64 будет быстрее, Itanium всё-таки )) на сервере всё хорошо компилируется... Какой итаниум? В каком веке живем? :) Уже давно есть x86_64 она же amd64, реализована практически во всех процессорах, которые сейчас выпускаются (x86 естественно). Кроме увеличения размеров регистров, так же увеличено их число, что дает некоторый прирост.По поводу многоядерности, как было сказано, этим занимается make. Цитировать Кроме того, STL у них разный - так что в некоторых тоже местах налететь можно. Ну так отчасти по тому в Qt и реализованы свои контейнеры.Название: Re: Время компиляции. Отправлено: SerjVarshavskiy от Декабрь 09, 2007, 22:03 смотрим в строну make - j <number> Я на 4х ядерном юзаю опцию make - j 8 Время компиляции уменьшилось в 3 раза! вах, реально "вставило" (т.е. ускорилось), сенкс |