powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / притормозить компилятор?
15 сообщений из 15, страница 1 из 1
притормозить компилятор?
    #38035014
manking
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как нибудь можно поставить что то типа sleep() для самой компиляции?

Чтобы проверить, есть ли результат от многомодульности и stdafx.
Конечно можно подключить какую нибудь библиотеку, но может есть подобное решение.

vs 2012.
...
Рейтинг: 0 / 0
притормозить компилятор?
    #38035038
Тормозок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Залинкуй в ресурсы фильм :)
...
Рейтинг: 0 / 0
притормозить компилятор?
    #38035369
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А для этого не достаточно замерить скорость всей компиляции и сборки в двух вариантах и сравнить ?
...
Рейтинг: 0 / 0
притормозить компилятор?
    #38035377
Слиип
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что нужно конкретно????
...
Рейтинг: 0 / 0
притормозить компилятор?
    #38035472
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Весьма странный способ оптимизации.
...
Рейтинг: 0 / 0
притормозить компилятор?
    #38036352
manking
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если бы был sleep() было бы проще выяснить компилируется ли заново определенный .cpp файл.

А вот #pragma message будет выведен, если файл уже скомпилирован?
внутри module.cpp

#pragma message("module.cpp компилируется");
...
Рейтинг: 0 / 0
притормозить компилятор?
    #38036965
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
manking,

Праг ма вообще не известно как обрабатывается конкретным компилятором, а уж будет ли печатать...
...
Рейтинг: 0 / 0
притормозить компилятор?
    #38037298
manking
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivmanking,

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

Ну а какой самый простой способ определить компилируется ли заново отдельный модуль .cpp?
Кроме включения "тяжелых" библиотек.
...
Рейтинг: 0 / 0
притормозить компилятор?
    #38037377
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mankingНу а какой самый простой способ определить компилируется ли заново отдельный модуль .cpp?
Кроме включения "тяжелых" библиотек. Посмотреть выхлоп сборщика, посмотреть дату создания (модификации) соответствующего объектного файла.
...
Рейтинг: 0 / 0
притормозить компилятор?
    #38038004
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mankingMasterZivmanking,

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

Ну а какой самый простой способ определить компилируется ли заново отдельный модуль .cpp?
Кроме включения "тяжелых" библиотек.

1) засеки время сборки, собери всё с и без прекомпайлед хидера, сравни времена. Если они существенно (не 1-2 секунды) разные, то вот оно.
2) собери одну часть (скомпилируй). Удали прекомпайлед хедер. Попробуй собрать другую часть. компилироваться не будет -- оно использует его. если будет -- нет. Если прекомпайлед хедер будет пересоздаваться, надо повторно удалить и собирать не так, как ты собираешь (не make, nmake , через проект и пр,), а руками вызывать компиляцию. Строку можно слямзить из выхлопа проекта в VC при сбореке.

При чём тут модульность не понятно.
Кстати не понятно при чём тут и stdafx, и зачем что-то проверять. ОН ПОМОГАЕТ, ОЧЕНЬ СИЛЬНО ! Я ГАРАНТИРУЮ
(иначе на кой фиг он был бы нужен, как думаешь ?)
...
Рейтинг: 0 / 0
притормозить компилятор?
    #38039640
manking
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё что предлагаете не выглядит таким простым быстрым решением. :(
Проще создать отдельный файл куда 40 тысяч раз скопировать if else
Код: plaintext
1.
2.
3.
4.
5.
int a = 5;

if(a == 5){a = 17;}
if(a == 17){a = 5;}
...



Тока всё это опять через задницу.
Мне казалось, должны быть какие то инструкции у препроцессора на этот счёт.




MasterZivПри чём тут модульность не понятно.
Кстати не понятно при чём тут и stdafx, и зачем что-то проверять. ОН ПОМОГАЕТ, ОЧЕНЬ СИЛЬНО ! Я ГАРАНТИРУЮ
(иначе на кой фиг он был бы нужен, как думаешь ?)

Ну в прекомпилированный кладу 100% неизменяемые файлы. Сторонние библиотеки.
Тогда с пустым main.cpp
После первой компиляции, время сборки 1 сек.


Ну а когда подключаю свои файлы, которые часто изменяю, если их в stdafx класть, выигрыша в скорости не получится из-за частого их изменения.

Поэтому решил код разбить на модули.
В .h объявления в .cpp код.
.h файлы как я понимаю компилируются всегда, а вот .cpp файлы заново компилируются только при их изменении или изменении в связанном с ними .h файле.


Однако из-за того, что в различных .h файлах могут требоваться элементы других .h файлов,
в этот .h файл надо включать требуемый .h файл или выносить требуемый файл в stdafx.

Всё это запутывает программу и становится непонятно, компилируется ли заново .cpp файл при этих перемещениях внутри его файла заголовка .h.
То есть не получится ли так, что модулей 15
1) функции1.h функции1.cpp
2) функции2.h функции2.cpp
...
15) функции15.h функции15.cpp

Но из-за того, что многие .h файлы включают друг друга, изменение большинства файлов, приводит к тому что заново начинают компилироваться их .cpp файлы.

Не знаю как проще объяснить.

Идеально если бы в окно компилятора вывелось что то типа
"!!! заново компилируется имя.cpp"
...
Рейтинг: 0 / 0
притормозить компилятор?
    #38039767
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mankingИдеально если бы в окно компилятора вывелось что то типа
"!!! заново компилируется имя.cpp"в окно Output не пробовал смотреть? всё он там пишет
ЗЫ включать предкомпиляцию на 15 файлах - не требуется. Когда к паре сотен приблизишься, тогда и задумайся об этом.
...
Рейтинг: 0 / 0
притормозить компилятор?
    #38040333
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, вот, наконец-то добились чего-то вменямого от пациента...

mankingНу а когда подключаю свои файлы, которые часто изменяю, если их в stdafx класть, выигрыша в скорости не получится из-за частого их изменения.


Идея как раз в том, что НЕ НАДО туда (в stdafx.h) класть часто изменяемые вещи.
Заголовки ЭТОГО (компилируемого) проекта строго НЕЛЬЗЯ.
Связанных проектов -- тоже.
Можно класть только заголовки системы, внешних библиотек, не изменяемых тобой никогда,
либо твоих библиотек, являющихся базовыми и не меняемых тоже почти никогда.

mankingПоэтому решил код разбить на модули.
В .h объявления в .cpp код.
.h файлы как я понимаю компилируются всегда,


Наоборот, .h файлы НИКОГДА не компилируются. Компилируются .c/.cpp.

mankingа вот .cpp файлы заново компилируются только при их изменении или изменении в связанном с ними .h файле.


Это вообще-то пока всё никак не связано с precompiled headers.

mankingОднако из-за того, что в различных .h файлах могут требоваться элементы других .h файлов,
в этот .h файл надо включать требуемый .h файл или выносить требуемый файл в stdafx.


Включать надо всегда. И по требованию выносить в stdafx.h

mankingВсё это запутывает программу и становится непонятно, компилируется ли заново .cpp файл при этих перемещениях внутри его файла заголовка .h.


Ничго не запутывает.

mankingТо есть не получится ли так, что модулей 15
1) функции1.h функции1.cpp
2) функции2.h функции2.cpp
...
15) функции15.h функции15.cpp

Но из-за того, что многие .h файлы включают друг друга, изменение большинства файлов, приводит к тому что заново начинают компилироваться их .cpp файлы.


Как бы если .h поменялся, зависимые .cpp обязаны перекомпилироваться, это не зависит от прекомпайлд хедера.

А вот если ты будет всё что ни поподя пихать в stdafx.h, всё будет зависеть от всего, и всё будет пересобираться при изменении одной маленькой фигульки.
Делай, как я написал выше, и всё будет ОК.

mankingНе знаю как проще объяснить.

Идеально если бы в окно компилятора вывелось что то типа
"!!! заново компилируется имя.cpp"

Это выводится.
...
Рейтинг: 0 / 0
притормозить компилятор?
    #38040499
manking
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЭто выводится.
Да, но не красиво.
warning`и мешают.

#pragma message() нормально работает в vs.
В принципе это самый простой способ.

Я суть на счёт stdafx и модулей понял.


Компилятор проходит как?
-> проход
-X пропуск


1 проход
построить решение:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
-> #include "stdafx.h" // создание объектного файла stdafx.obj
-> 
-> #include "module.h"  // компиляция или сбор объявлений 
->[[ 
-> module,cpp  // создание объектного файла module.obj
->]]
-> 
-> main(){}





построить решение:
2 проход
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
-X #include "stdafx.h"  // уже скомпилирован
-> 
-> #include "module.h" // компиляция или сбор объявлений 
-X[[ 
-X module,cpp  // уже скомпилирован
-X]]
-> 
-> main(){}




1) То есть если в файле заголовков "module.h" будет очень много строк, то компиляция в любом случаи затянется?
2) Можно ли подключать не 1, а несколько прекомпилированных заголовков?
3) прекомпилированный отличается от модулей тем, что там в объектный файл попадает всё содержимое stdafx.h?
В модулях же, заголовки .h собираются каждый раз?
...
Рейтинг: 0 / 0
притормозить компилятор?
    #38040678
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mankingMasterZivЭто выводится.
Да, но не красиво.
warning`и мешают.варнинги, чувак, надо исправлять незамедлительно. Это куда важней, чем всякая предкомпиляция.

и ещё раз, медленно: ".h файлы НИКОГДА не компилируются. Компилируются .c/.cpp." (с) MasterZiv
осознай это, подумай внимательно, что делает директива #include
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / притормозить компилятор?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]