IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   Как ускорить компиляцию проекта на С++ под UNIX ? (https://www.imho.ws/showthread.php?t=107441)

tvcool 24.08.2006 03:31

Как ускорить компиляцию проекта на С++ под UNIX ?
 
Есть проект на С++ состоящий из более чем 60 файлов. Компиляция занимает около минуты. Можно ли как-то это ускорить?

Я знаю что есть возможность компилировать только изменённые файлы, но так-как проект для университета, и я должен послать source code на автоматическую проверку, этот вариант не подходит.


Компиляция командой g++ *.cpp занимает около минуты
Компиляция командой make, с простеньким makefile, занимает примерно пол минуты. Может можно как-то усовершенствовать makefile.

crazydown 24.08.2006 09:04

попробуй отключить оптимизацию g++ -O0 *.cpp

Drakosha 24.08.2006 12:22

Если нормально написан makefile то будут компилироваться только измененные файлы. Но, как ты правильно сказал, это не поможет при первой компиляции.
Попробуй убрать зависимости, т.е. #include которые не нужны. Постарайся использовать forward declarations (class A; ) вместно них где можно.

П.С. кстати в make есть флаг -j <x> где <x> - кол-во паралельных компиляций. Если комп сильный, то можно попробовать -j 2 или -j 3

tvcool 24.08.2006 17:45

Попробовал это g++ -O0 *.cpp - занимает точно столько-же времени

Хотя make запускается на сервере проверки, и добовлять флаги я не могу, я всё-таки проверил make с флагом -j <x> , но так тоже занимет столько-же как и без флага :confused:


Цитата:

Попробуй убрать зависимости, т.е. #include которые не нужны. Постарайся использовать forward declarations (class A; ) вместно них где можно.
Убрать по возможности #include из .h и из .cpp или если убрать только из .h тоже поможет ?

Drakosha 24.08.2006 18:00

чем больше убереш тем лучше ;). из .h даже важнее чем из .cpp т.к. .h может компилироваться больше чем один раз (если он #include-ed в нескольких файлах)

а -j может и не помогает, зависит от компьютера

ktulu 29.08.2006 23:09

И еще 500 раз проверить, скоолько раз файл included. На множественной компиляции заголовков можно потерять куда больше времени, чем на неправильной оптимизации, поэтому #ifndef проверить много-много раз. Если пара больших заголовочных файлов подключится больше одного раза, времени будет потеряно ОЧЕНЬ много.


Часовой пояс GMT +4, время: 12:25.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.