Re[5]: Утилита для сбора includes в stdafx
От: uzhas Ниоткуда  
Дата: 14.03.14 06:43
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Идея топикстартера в том, чтобы не руками заполнять stdafx.h, а автоматически.

идея гнилая имхо, ибо такие неявные (автоматические) инклюды могут сломать компилябельность кода и повлиять на работоспособность программы.
чтобы доводить до автоматизма такие идеи их прежде всего следует опробовать, то есть собрать такой мега-хедер и оценить, есть ли ускорение сборки
мой опыт подсказывает, что скорость сборки можно увеличить с помощью:
1) параллельная сборка (как внутри одного проекта, так и нескольких проектов)
2) SSD диск
3) настроенный stdafx.h для каждой библиотеки

ну и замедляется сборка от шаблонов, как ни крути
Re[7]: Утилита для сбора includes в stdafx
От: MasterZiv СССР  
Дата: 14.03.14 07:50
Оценка:
On 14.03.2014 00:03, Кодт wrote:

> Смысл в том, что файл разбивается на "до прагмы" и "после прагмы", и то,

> что до прагмы, не перекомпилируется каждый раз.

> Вообще, штука удобная, и использовалась ещё в борланд С++.


Ну, я как бы "боевой таракан", но тем не менее hdrstop никогда
сознательно не пользовался, и немного потерял.

Вообще, класть что-то изменяемое в данном проекте в stdafx.h -- это
как-то неправильно. Возможно, существуют какие-то резоны для этого,
но я их не знаю.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: Утилита для сбора includes в stdafx
От: MasterZiv СССР  
Дата: 14.03.14 07:58
Оценка:
On 14.03.2014 00:26, Кодт wrote:

> ////////////////////

> // stdafx.h
> #include <vector>
> ....
>
>
> /////////////////////
> // main.cpp
> #include "stdafx.h"
> #include <vector>
> .....
>
> // разворачивается
>
> #include "stdafx.h"
> #include <vector>
> #ifndef __STD_VECTOR__
> #define __STD_VECTOR__
> #include <memory>
> #include <utility>
> #include <algorithm>
> blablabla
> #endif
> #include <vector>
> #ifndef __STD_VECTOR__// а гвардеец уже определён!
> #endif
> .....
>
>

Так я о том и говорил. Если stdafx.h включается условно, например, в
зависимости от платформы, то второй #include <vector> уже "сработает"
(раскроется в код) и модуль будет компилироваться.


> Идея топикстартера в том, чтобы не руками заполнять stdafx.h, а

> автоматически.

Я её до сих пор не понял.
Я могу представить только один сценарий, когда это нужно (как было у
нас) -- тонны кода, неверно оформленного, и хочется выкинуть
существующие stdafx.h и заполнить их заново. Но кстати это не всегда
будет работать -- если модули "третьего рода", как это называлось в
Rational Rose, то нужные заголовки могут быть только в старом stdafx.h.


> На машине разработчика, где некоторые хедеры библиотечные, а некоторые

> часто меняются, наполнить allheaders.h (или stdafx.h напрямую)
> зависимостями — это значит перекомпилировать каждый раз вообще всё.


Это вот как-то похоже уже на ересь... Зачем использовать разные
заголовки ? Не потерпеть девелоперу в первый раз 20 секунд лишних ?
Не понимаю...
Posted via RSDN NNTP Server 2.1 beta
Re[6]: Утилита для сбора includes в stdafx
От: SVV Беларусь  
Дата: 14.03.14 09:18
Оценка:
Здравствуйте, uzhas, Вы писали:

U>Здравствуйте, Кодт, Вы писали:


К>>Идея топикстартера в том, чтобы не руками заполнять stdafx.h, а автоматически.

U>идея гнилая имхо, ибо такие неявные (автоматические) инклюды могут сломать компилябельность кода и повлиять на работоспособность программы.
U>чтобы доводить до автоматизма такие идеи их прежде всего следует опробовать, то есть собрать такой мега-хедер и оценить, есть ли ускорение сборки
U>мой опыт подсказывает, что скорость сборки можно увеличить с помощью:
U>1) параллельная сборка (как внутри одного проекта, так и нескольких проектов)
U>2) SSD диск
тут вы заблуждаетесь. Даже RamDrive дает всего 14% производительности: http://habrahabr.ru/post/117670/
искать фразу "Весь проект — на RamDrive"
U>3) настроенный stdafx.h для каждой библиотеки
это как? для каждого проекта в решении — можно. так и планируется. даже есть идея для эксперимента в stdafx включить только внешние h и использовать единый pch для всех проектов, коих в решении за 300. но C++ где-то до 200.
Кстати, все в решении около 2800 h файлов и около 2500 cpp файлов, итого около 5 400 h+cpp файлов

U>ну и замедляется сборка от шаблонов, как ни крути
Re[6]: Утилита для сбора includes в stdafx
От: SVV Беларусь  
Дата: 14.03.14 09:21
Оценка:
Здравствуйте, MasterZiv, Вы писали:

>> Идея топикстартера в том, чтобы не руками заполнять stdafx.h, а

>> автоматически.

MZ>Я её до сих пор не понял.

MZ>Я могу представить только один сценарий, когда это нужно (как было у
MZ>нас) -- тонны кода, неверно оформленного, и хочется выкинуть
MZ>существующие stdafx.h и заполнить их заново. Но кстати это не всегда
MZ>будет работать -- если модули "третьего рода", как это называлось в
MZ>Rational Rose, то нужные заголовки могут быть только в старом stdafx.h.
сейчас stdafx нет вообще, precompiled headers not used.
Кстати, как реализуются pch на других компиляторах, вроде xcode? будут ли работать pch для студии на каком-нибудь xcode?
Re[6]: Утилита для сбора includes в stdafx
От: SVV Беларусь  
Дата: 14.03.14 10:02
Оценка:
Здравствуйте, uzhas, Вы писали:

U>Здравствуйте, Кодт, Вы писали:


К>>Идея топикстартера в том, чтобы не руками заполнять stdafx.h, а автоматически.

U>идея гнилая имхо, ибо такие неявные (автоматические) инклюды могут сломать компилябельность кода и повлиять на работоспособность программы.
U>чтобы доводить до автоматизма такие идеи их прежде всего следует опробовать, то есть собрать такой мега-хедер и оценить, есть ли ускорение сборки
...
эксперименты в ручном режиме проводились на прошлой работе и результат был — ускорение Build в разы. но там были небольшие проекты, правда в большом количестве. небольшие у меня это до 50 cpp файлов
Re[7]: Утилита для сбора includes в stdafx
От: uzhas Ниоткуда  
Дата: 14.03.14 10:20
Оценка:
Здравствуйте, SVV, Вы писали:

SVV>тут вы заблуждаетесь. Даже RamDrive дает всего 14% производительности: http://habrahabr.ru/post/117670/

SVV>искать фразу "Весь проект — на RamDrive"

я не могу заблуждаться в своем личном опыте
речь не про проект на RamDrive, а про проект и система на SSD

беда с невозможностью параллельной линковки остается
Re[8]: Утилита для сбора includes в stdafx
От: SVV Беларусь  
Дата: 14.03.14 14:42
Оценка:
Здравствуйте, uzhas, Вы писали:

U>Здравствуйте, SVV, Вы писали:


SVV>>тут вы заблуждаетесь. Даже RamDrive дает всего 14% производительности: http://habrahabr.ru/post/117670/

SVV>>искать фразу "Весь проект — на RamDrive"

U>я не могу заблуждаться в своем личном опыте

U>речь не про проект на RamDrive, а про проект и система на SSD
я недавно специально приносил SSD на работу для тестов. исходники и выходные файлы были на SSD. скорость не увеличилась. запуск билда — скриптом. другое дело что паралельная с билдом работа сильно тормозит компьютер в случае обычного HDD и все ok когда есть SSD.
У меня на рабочем компьютере 16 Гб памяти и компиляция была повторная (но после clean), соответственно совсем все могло быть закэшировано.

U>беда с невозможностью параллельной линковки остается

даже для разных проектов?
Re[7]: Утилита для сбора includes в stdafx
От: MasterZiv СССР  
Дата: 14.03.14 15:22
Оценка:
On 14.03.2014 13:21, SVV wrote:

> сейчас stdafx нет вообще, precompiled headers not used.

> Кстати, как реализуются pch на других компиляторах, вроде xcode? будут
> ли работать pch для студии на каком-нибудь xcode?

GCC вроде не поддерживает (gcc вообще достаточно медленно компилирует --
парни не паряца, и в общем, правильно).

Intel-овый вроде бы поддерживает и эмулирует функционал MS C.
Posted via RSDN NNTP Server 2.1 beta
Re: Утилита для сбора includes в stdafx
От: ioni Россия  
Дата: 15.03.14 17:45
Оценка: 3 (1)
правда для последней студии
http://www.drdobbs.com/cpp/the-most-underused-compiler-switches-in/240166599?pgno=9
Re[2]: Утилита для сбора includes в stdafx
От: Ops Россия  
Дата: 29.03.14 19:03
Оценка:
Здравствуйте, ioni, Вы писали:

I>правда для последней студии

I>http://www.drdobbs.com/cpp/the-most-underused-compiler-switches-in/240166599?pgno=9

Сам только что там же наткнулся. MSDN показывает описание ключа не только для последней.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[3]: Утилита для сбора includes в stdafx
От: SVV Беларусь  
Дата: 04.04.14 09:38
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Здравствуйте, ioni, Вы писали:


I>>правда для последней студии

I>>http://www.drdobbs.com/cpp/the-most-underused-compiler-switches-in/240166599?pgno=9

Ops>Сам только что там же наткнулся. MSDN показывает описание ключа не только для последней.

и как это помогает ускорить компиляцию?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.