imho.ws |
![]() |
![]() |
|
Сообщения:
Перейти к новому /
Последнее
|
Опции темы |
![]() |
# 1 |
Member
Регистрация: 02.06.2002
Сообщения: 357
![]() |
![]()
Есть проект на С++ состоящий из более чем 60 файлов. Компиляция занимает около минуты. Можно ли как-то это ускорить?
Я знаю что есть возможность компилировать только изменённые файлы, но так-как проект для университета, и я должен послать source code на автоматическую проверку, этот вариант не подходит. Компиляция командой g++ *.cpp занимает около минуты Компиляция командой make, с простеньким makefile, занимает примерно пол минуты. Может можно как-то усовершенствовать makefile. |
![]() |
![]() |
# 3 |
Full Member
Регистрация: 16.10.2002
Адрес: ArchLinux, Internet
Сообщения: 557
![]() ![]() ![]() ![]() |
Если нормально написан makefile то будут компилироваться только измененные файлы. Но, как ты правильно сказал, это не поможет при первой компиляции.
Попробуй убрать зависимости, т.е. #include которые не нужны. Постарайся использовать forward declarations (class A; ) вместно них где можно. П.С. кстати в make есть флаг -j <x> где <x> - кол-во паралельных компиляций. Если комп сильный, то можно попробовать -j 2 или -j 3 Последний раз редактировалось Drakosha; 24.08.2006 в 12:21. |
![]() |
![]() |
# 4 | |
Member
Регистрация: 02.06.2002
Сообщения: 357
![]() |
Попробовал это g++ -O0 *.cpp - занимает точно столько-же времени
Хотя make запускается на сервере проверки, и добовлять флаги я не могу, я всё-таки проверил make с флагом -j <x> , но так тоже занимет столько-же как и без флага ![]() Цитата:
|
|
![]() |
![]() |
# 5 |
Full Member
Регистрация: 16.10.2002
Адрес: ArchLinux, Internet
Сообщения: 557
![]() ![]() ![]() ![]() |
чем больше убереш тем лучше
![]() а -j может и не помогает, зависит от компьютера Последний раз редактировалось Drakosha; 24.08.2006 в 18:07. |
![]() |
![]() |
# 6 |
Junior Member
Регистрация: 21.04.2005
Сообщения: 117
![]() |
И еще 500 раз проверить, скоолько раз файл included. На множественной компиляции заголовков можно потерять куда больше времени, чем на неправильной оптимизации, поэтому #ifndef проверить много-много раз. Если пара больших заголовочных файлов подключится больше одного раза, времени будет потеряно ОЧЕНЬ много.
__________________
I have come here to chew bubblegum and kick ass ...and I'm all out of bubblegum! ![]() |
![]() |