Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Precompiled headers 
:(
    Опции темы
archimed7592
Дата 24.11.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(Любитель @  24.11.2007,  18:31 Найти цитируемый пост)
Второе, вроде как, deprecated.

deprecated начиная с v4.0, просто вопрос был немного в другой плоскости, как, соответственно и ответ smile.

Цитата(Любитель @  24.11.2007,  18:31 Найти цитируемый пост)
На времени компиляции очень сказывается.

Почти не сказывается при использовании PCH smile.

Добавлено через 39 секунд
На всякий случай: PCH - это precompiled headers smile.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
JackYF
Дата 24.11.2007, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(archimed7592 @  24.11.2007,  18:41 Найти цитируемый пост)
На всякий случай: PCH - это precompiled headers

 smile ну, я, например, precompiled headers не юзаю. Имхо, слишком много геморроя и неоднозначностей.

Цитата(Любитель @  24.11.2007,  18:31 Найти цитируемый пост)
На времени компиляции очень сказывается.

Так что +много, и + проект "чище".



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
archimed7592
Дата 24.11.2007, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(JackYF @  24.11.2007,  21:18 Найти цитируемый пост)
Имхо, слишком много геморроя и неоднозначностей.

К примеру? 0_о
Я знаю только одну с ними проблему(точнее баг, и тот, скорее всего, уже исправлен в более свежих версиях).


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
JackYF
Дата 24.11.2007, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(archimed7592 @  24.11.2007,  21:24 Найти цитируемый пост)
К примеру? 0_о

давно как-то раз связался. И потом наткнулся на очень странные сообщения компилятора - то файл он не находит, то ещё что-то. Уже не помню.
Бага, не бага, но пока я с ними связываться не хочу.
субъективная психологическая установка, если хотите




--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
archimed7592
Дата 24.11.2007, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93




M
archimed7592
Сообщения разделены из темы [QT4] компилится но не работает


Добавлено через 3 минуты и 1 секунду
Цитата(JackYF @  24.11.2007,  23:08 Найти цитируемый пост)
давно как-то раз связался. И потом наткнулся на очень странные сообщения компилятора - то файл он не находит, то ещё что-то. Уже не помню.

Ммм... Просто для использования PCH есть несколько простых правил. При их соблюдении - ну, программировать, что ли приятней, когда build не занимает 2-3 минуты(у меня сейчас, к сожалению, очень слабенькая машина - бывает и по 5-7 минут :().


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
archimed7592
Дата 24.11.2007, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93





--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
JackYF
Дата 24.11.2007, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(archimed7592 @  24.11.2007,  23:17 Найти цитируемый пост)
Просто для использования PCH есть несколько простых правил.

Ну, как нибудь на досуге надо будет ещё раз попробовать smile.




--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
archimed7592
Дата 24.11.2007, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(JackYF @  24.11.2007,  23:42 Найти цитируемый пост)
Ну, как нибудь на досуге надо будет ещё раз попробовать smile.

Дам пару наводочек(в принципе, всё это можно прочитать в мануале GCC) smile.
1. В PCH суют уже готовые библиотеки(т.е. "рабочие" заголовки туда засовывать не нужно, ибо при их модификации будет происходит rebuild PCH, что, само по себе, операция достаточно долгая - сравнимо с минутой).
2. Может быть только один PCH.
2. include "PCH.hpp" должно идти первой строчкой(в идеале, ДО первого C/C++ token'а).
3. Компилировать PCH нужно с теми же define'ами и теми же опциями компилятора.

Вот, собственно и всё smile. Прилагаю архивчик с используемым мною PCH.

PS. Ах, да, чуть не забыл - у qmake есть прекрасная переменная: PRECOMPILED_HEADER(assistant тебе в помощь) smile.


Присоединённый файл ( Кол-во скачиваний: 15 )
Присоединённый файл  PCH.rar 1,17 Kb


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
bsa
Дата 25.11.2007, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Собрал свой проект с использованием pch:
real    1m12.063s
user    1m2.440s
sys     0m12.277s

И без использования:
real    1m49.846s
user    1m40.698s
sys     0m13.381s

Процентов 30% экономии времени. Правда, обнаружилась проблема с <boost/bind.hpp> (при линковке куча проблем с _1, _2...) и <boost/date_time/time.hpp> (при создании pch gcc 4.1.2 что-то не понравилось со скобкой в этом файле)

PM   Вверх
JackYF
Дата 25.11.2007, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Спасибо за инфу и вообще за обращение внимание на возможность использования PCH...

Но в архиве же почти все хедеры, которые могут в принципе когда-нибудь понадобиться, уже туда засунуты разом и скопом!... неужели компилятор это всё быстрее схавает, чем указанные конкретные хедеры в каждом конкретном проекте?

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




--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
archimed7592
Дата 25.11.2007, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(bsa @  25.11.2007,  00:57 Найти цитируемый пост)
Процентов 30% экономии времени.

Хех. А ты попробуй теперь изменить один файл и опять сделать make ;).


Цитата(bsa @  25.11.2007,  00:57 Найти цитируемый пост)
Правда, обнаружилась проблема с <boost/bind.hpp> (при линковке куча проблем с _1, _2...)

Вот об этой проблеме я и говорил smile. Только у меня она проявлялась для boost::lambda::.., а с bind никаких проблем нет.
Баг, насколько я понимаю, в обработке gcc анонимных пространств имён. Значит в gcc-4 проблемы с pch тоже остались? А жаль :(.

Добавлено через 2 минуты и 49 секунд
Цитата(JackYF @  25.11.2007,  01:01 Найти цитируемый пост)
Но в архиве же почти все хедеры, которые могут в принципе когда-нибудь понадобиться, уже туда засунуты разом и скопом!... неужели компилятор это всё быстрее схавает, чем указанные конкретные хедеры в каждом конкретном проекте?

Фишка в том, что схавает он это один раз. В последующем компилировать сами модули будет также быстро, как и msvc(субъективная оценка).


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
bsa
Дата 25.11.2007, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Кстати, у меня gcc pch делал порядка 10 секунд для этого:
Код
#if defined __cplusplus

# include <QtGui>
# include <QApplication>

# include <algorithm>
# include <string>
# include <vector>
# include <list>
# include <set>
# include <map>

# include <iostream>
# include <iomanip>
# include <fstream>
# include <sstream>

# include <boost/spirit.hpp>
# include <boost/program_options.hpp>
# include <boost/thread.hpp>
# include <boost/utility.hpp>
# include <boost/signal.hpp>
# include <boost/format.hpp>
# include <boost/smart_ptr.hpp>
# include <boost/tuple/tuple.hpp>
# include <boost/lexical_cast.hpp>

#endif    //__cplusplus

PM   Вверх
archimed7592
Дата 25.11.2007, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



bsa, по сути, без разницы - пусть хоть 2 минуты делает, если это делать придётся раз в месяц, то ничего страшного smile.

А вот, когда каждые 40 минут приходится по 5 минут ждать пока каждый модуль "родит" - вот это уже "страшно" smile.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
bsa
Дата 25.11.2007, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



У меня на слабых машинах другая проблема - 5 минут жду, пока слинкуется  smile 
PM   Вверх
archimed7592
Дата 25.11.2007, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



К сожалению, prelinked headers пока не изобрели smile.

Правда, я помню долго ждал линковки только один раз, когда, в отладочных целях, поставил ключик -fkeep-inline-functions smile.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1032 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.