Russian Qt Forum
Ноябрь 24, 2024, 23:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Время компиляции.  (Прочитано 21034 раз)
Tam-Tam
Гость
« : Ноябрь 14, 2007, 00:19 »

Сборка любого проекта занимает нереально большое время. Для примера - простенькие примерчик с показаной одной лейблой занимает 8! секунд. Проект чуть более примитива собирается более минуты. Кто-нибудь может сказать, это проблема чего - настроек, Qt, железа, положения звезд иль чего-нибудь еще ?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Ноябрь 14, 2007, 00:35 »

Какая платформа, компилятор, Qt?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
QCasper
Гость
« Ответ #2 : Ноябрь 14, 2007, 00:40 »

Какая платформа, компилятор, Qt?
Процессор, память?

P.S.:
Код:
#include <qapplication.h>
#include <qlabel.h>

int main(int argc, char *argv[]) {
QApplication a(argc, argv);
QLabel l;
l.show();
return a.exec();
}

4 секунды. CPU Intel Celeron 1.7, RAM DDR-2100, OS Win XP Pro SP2, msvc-2005 (vc++ express), Qt 4.3.2 Open Source.
« Последнее редактирование: Ноябрь 14, 2007, 00:42 от QCasper » Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #3 : Ноябрь 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
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Tam-Tam
Гость
« Ответ #4 : Ноябрь 14, 2007, 00:51 »

Код:
#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QLabel *label = new QLabel("Hello Qt!");
    label->show();
    return app.exec();
}

8 секунд

Sempron 1100 MHz  
память 512м
ХР
g++
Qt 4.3.2 Open Source.

Записан
QCasper
Гость
« Ответ #5 : Ноябрь 14, 2007, 00:53 »

Кстати на скорости компиляции еще очень хорошо сказывается использование precompiled headers, у меня время компиляции проекта в 20 с лишним тысяч строк упало с 13 минут до 4-х с половиной. Но это актуально только для проектов, где встречаются (желательно довольно часто) модули, состоящие из не очень маленького количества исходных файлов. Хотя бы больше трех, тогда уже более менее чувствуется.
Записан
QCasper
Гость
« Ответ #6 : Ноябрь 14, 2007, 00:55 »


8 секунд

Sempron 1100 MHz 
память 512м
ХР
g++
Qt 4.3.2 Open Source.



Ключевые слова здесь g++ и Sempron 1100. Объем памяти большой роли не играет.
Записан
Tam-Tam
Гость
« Ответ #7 : Ноябрь 14, 2007, 01:00 »

Ключевые слова здесь g++ и Sempron 1100. Объем памяти большой роли не играет.

А подробнее ? Пути решения ?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #8 : Ноябрь 14, 2007, 01:04 »

А подробнее ? Пути решения ?

Можно попробывать перейти на VS 2005 Express. Компилятор в ней пошустрее
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
QCasper
Гость
« Ответ #9 : Ноябрь 14, 2007, 01:09 »

А подробнее ? Пути решения ?

У меня с g++ тот же пример - 6 секунд. Поэтому пути решения:
1. Перейти на msvc
2. Купить комп как у pastor'a. Хотя бы процессор Подмигивающий
Записан
QCasper
Гость
« Ответ #10 : Ноябрь 14, 2007, 01:15 »

Кстати на скорости компиляции еще очень хорошо сказывается использование precompiled headers, у меня время компиляции проекта в 20 с лишним тысяч строк упало с 13 минут до 4-х с половиной. Но это актуально только для проектов, где встречаются (желательно довольно часто) модули, состоящие из не очень маленького количества исходных файлов. Хотя бы больше трех, тогда уже более менее чувствуется.

Да, забыл добавить, также на скорости компиляции отрицательно сказывается использование директив #include в *.h файлах, поэтому там, где это возможно, предпочтительно объявлять указатель на объект, тогда можно обойтись без использования директивы #include в *.h файле, достаточно будет включить её в *.cpp файл, например:

Код:
#include <qwidget.h>
#include <qlabel.h>

class MyMegaWidget : public QWidget {
private:
   QLabel m_L;
}

данный код лучше заменить так:

Код:
#include <qwidget.h>

class QLabel;

class MyMegaWidget : public QWidget {
private:
   QLabel *m_L;
}

Как видно, от одного включения, а именно #include <qwidget.h> избавиться таки не удалось, но тем не менее там где это возможно, это рекомендуется делать.
Записан
Tam-Tam
Гость
« Ответ #11 : Ноябрь 14, 2007, 01:31 »

Можно попробывать перейти на VS 2005 Express. Компилятор в ней пошустрее

Много сам компилятор без среды занимает ?
Записан
QCasper
Гость
« Ответ #12 : Ноябрь 14, 2007, 01:34 »

Много сам компилятор без среды занимает ?

может быть и нет, но я без среды не нашел, если только самостоятельно выкроить его оттуда. Со средой и всем необходимым для установки (типа дот нет 2 и виндовс инсталлер 3) - примерно сто метров.
Записан
Tam-Tam
Гость
« Ответ #13 : Ноябрь 14, 2007, 02:47 »

Можешь выложить или кинуть линк в ПМ ?
Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #14 : Ноябрь 14, 2007, 06:48 »

1. На платформе Windows используйте VC++ Express- компилятор быстрее раз в 5, чем g++ .
2. По возможности используйте PCH!

http://lestornqt.blogspot.com/2006/08/pch.html

Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.052 секунд. Запросов: 23.