Czas kompilacji GCC nie przynosi wiele korzyści z prekompilowanych nagłówków

Mam ogromny projekt, około 150 000 LOC kodu C ++. Czas budowy to około 15 minut. Ten projekt składa się z wielu podprojektów o różnych rozmiarach.

Zbudowałem osobne prekompilowane nagłówki dla każdego podprojektu, ale gdy ich użyję, czas kompilacji pozostaje mniej więcej taki sam. Wydawało się, że czas budowy jest o 5-10% mniejszy, a nie większy.

Prekompilowane nagłówki są zdecydowanie używane, używam-Winvalid-pch opcja i próbowałem się skompilować-H opcja kompilatora, moje prekompilowane nagłówki pojawiają się na wyjściu z symbolem 'bang', co oznacza, że ​​kompilator może używać prekompilowanego nagłówka.

Wszystkie moje prekompilowane nagłówki nie są zbyt duże, każdy plik ma około 50 MB. Używam skryptu Pythonatutaj aby wygenerować listę najczęściej używanych prekompilowanych nagłówków, więc moja lista kandydatów do prekompilacji jest całkiem dobra.

Czy są jakieś darmowe / otwarte narzędzia do optymalizacji budowania? Wydawało się, że to standardmake narzędzie nie ma możliwości mierzenia czasów budowy różnych celów. Nie mogę znaleźć sposobu na uzyskanie statystyk dla różnych celówmake. Nie mówię o analizie zależności ani o czymś zaawansowanym. Chcę tylko wiedzieć, jakie cele marnowano przez większość czasu.

Wydawało się również, że GCC jest dość nieefektywny w radzeniu sobie z prekompilowanymi nagłówkami. Nie udało mi się zbudować żadnego podprojektu, który byłby znacznie szybszy, a maksymalne przyspieszenie, które otrzymuję, wynosi 20% w przypadku projektu, który ma trzy minuty na zbudowanie. Wydawało się, że łatwiej i taniej jest kupić szybszą maszynę z napędem SSD niż zoptymalizować czas budowy Linuksa z GCC.

questionAnswers(3)

yourAnswerToTheQuestion