Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
притормозить компилятор?
|
|||
|---|---|---|---|
|
#18+
Как нибудь можно поставить что то типа sleep() для самой компиляции? Чтобы проверить, есть ли результат от многомодульности и stdafx. Конечно можно подключить какую нибудь библиотеку, но может есть подобное решение. vs 2012. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2012, 17:01 |
|
||
|
притормозить компилятор?
|
|||
|---|---|---|---|
|
#18+
Залинкуй в ресурсы фильм :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2012, 17:18 |
|
||
|
притормозить компилятор?
|
|||
|---|---|---|---|
|
#18+
А для этого не достаточно замерить скорость всей компиляции и сборки в двух вариантах и сравнить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2012, 21:12 |
|
||
|
притормозить компилятор?
|
|||
|---|---|---|---|
|
#18+
А что нужно конкретно???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2012, 21:21 |
|
||
|
притормозить компилятор?
|
|||
|---|---|---|---|
|
#18+
Весьма странный способ оптимизации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2012, 23:38 |
|
||
|
притормозить компилятор?
|
|||
|---|---|---|---|
|
#18+
Если бы был sleep() было бы проще выяснить компилируется ли заново определенный .cpp файл. А вот #pragma message будет выведен, если файл уже скомпилирован? внутри module.cpp #pragma message("module.cpp компилируется"); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2012, 14:59 |
|
||
|
притормозить компилятор?
|
|||
|---|---|---|---|
|
#18+
manking, Праг ма вообще не известно как обрабатывается конкретным компилятором, а уж будет ли печатать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2012, 20:04 |
|
||
|
притормозить компилятор?
|
|||
|---|---|---|---|
|
#18+
MasterZivmanking, Праг ма вообще не известно как обрабатывается конкретным компилятором, а уж будет ли печатать... Ну а какой самый простой способ определить компилируется ли заново отдельный модуль .cpp? Кроме включения "тяжелых" библиотек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2012, 05:24 |
|
||
|
притормозить компилятор?
|
|||
|---|---|---|---|
|
#18+
mankingНу а какой самый простой способ определить компилируется ли заново отдельный модуль .cpp? Кроме включения "тяжелых" библиотек. Посмотреть выхлоп сборщика, посмотреть дату создания (модификации) соответствующего объектного файла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2012, 09:02 |
|
||
|
притормозить компилятор?
|
|||
|---|---|---|---|
|
#18+
mankingMasterZivmanking, Праг ма вообще не известно как обрабатывается конкретным компилятором, а уж будет ли печатать... Ну а какой самый простой способ определить компилируется ли заново отдельный модуль .cpp? Кроме включения "тяжелых" библиотек. 1) засеки время сборки, собери всё с и без прекомпайлед хидера, сравни времена. Если они существенно (не 1-2 секунды) разные, то вот оно. 2) собери одну часть (скомпилируй). Удали прекомпайлед хедер. Попробуй собрать другую часть. компилироваться не будет -- оно использует его. если будет -- нет. Если прекомпайлед хедер будет пересоздаваться, надо повторно удалить и собирать не так, как ты собираешь (не make, nmake , через проект и пр,), а руками вызывать компиляцию. Строку можно слямзить из выхлопа проекта в VC при сбореке. При чём тут модульность не понятно. Кстати не понятно при чём тут и stdafx, и зачем что-то проверять. ОН ПОМОГАЕТ, ОЧЕНЬ СИЛЬНО ! Я ГАРАНТИРУЮ (иначе на кой фиг он был бы нужен, как думаешь ?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2012, 14:18 |
|
||
|
притормозить компилятор?
|
|||
|---|---|---|---|
|
#18+
Всё что предлагаете не выглядит таким простым быстрым решением. :( Проще создать отдельный файл куда 40 тысяч раз скопировать if else Код: plaintext 1. 2. 3. 4. 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" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 13:24 |
|
||
|
притормозить компилятор?
|
|||
|---|---|---|---|
|
#18+
mankingИдеально если бы в окно компилятора вывелось что то типа "!!! заново компилируется имя.cpp"в окно Output не пробовал смотреть? всё он там пишет ЗЫ включать предкомпиляцию на 15 файлах - не требуется. Когда к паре сотен приблизишься, тогда и задумайся об этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 14:15 |
|
||
|
притормозить компилятор?
|
|||
|---|---|---|---|
|
#18+
Ну, вот, наконец-то добились чего-то вменямого от пациента... 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" Это выводится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 18:36 |
|
||
|
притормозить компилятор?
|
|||
|---|---|---|---|
|
#18+
MasterZivЭто выводится. Да, но не красиво. warning`и мешают. #pragma message() нормально работает в vs. В принципе это самый простой способ. Я суть на счёт stdafx и модулей понял. Компилятор проходит как? -> проход -X пропуск 1 проход построить решение: Код: java 1. 2. 3. 4. 5. 6. 7. 8. построить решение: 2 проход Код: java 1. 2. 3. 4. 5. 6. 7. 8. 1) То есть если в файле заголовков "module.h" будет очень много строк, то компиляция в любом случаи затянется? 2) Можно ли подключать не 1, а несколько прекомпилированных заголовков? 3) прекомпилированный отличается от модулей тем, что там в объектный файл попадает всё содержимое stdafx.h? В модулях же, заголовки .h собираются каждый раз? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2012, 21:07 |
|
||
|
притормозить компилятор?
|
|||
|---|---|---|---|
|
#18+
mankingMasterZivЭто выводится. Да, но не красиво. warning`и мешают.варнинги, чувак, надо исправлять незамедлительно. Это куда важней, чем всякая предкомпиляция. и ещё раз, медленно: ".h файлы НИКОГДА не компилируются. Компилируются .c/.cpp." (с) MasterZiv осознай это, подумай внимательно, что делает директива #include ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2012, 00:04 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38035369&tid=2020672]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
193ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 300ms |

| 0 / 0 |
