Улучшение C Время сборки на Windows (г cc 3.4.5) - PullRequest
0 голосов
/ 23 января 2020

Я программирую на старом техническом стеке и хочу улучшить время компиляции. Я видел приложение под названием ccache , но похоже, что оно работает только на Unix системах. Есть ли другой способ улучшить время компиляции на windows помимо запуска на большем количестве машин?

1 Ответ

1 голос
/ 07 февраля 2020
  • Используйте инструмент сборки, такой как make, так что вам нужно только пересобрать модули, которые требуют повторной генерации.
  • Компилировать с -pipe, чтобы не записывать временные файлы (например, предварительно обработанный код, сборка) и трубы используются вместо. Дает ли это преимущество, зависит от того, насколько эффективно хост может обрабатывать каналы и насколько быстро работает файловая система.
  • Используйте меньше отладочной информации. Dwarf-3 и выше приводит к большим объектам, которые должны быть связаны, потому что каждый макрос C хранится. Если вам не нужно отлаживать, скомпилируйте с -g0 соотв. без отладочной информации.
  • Используйте менее агрессивную оптимизацию. Целевая программа может быть менее оптимальной, производительность хоста может увеличиться. Вы можете добавить опции -Q -v, которые показывают, какие флаги включены и сколько времени затрачивается на определенные c проходы, что помогает вам определить, какие проходы являются наиболее трудоемкими, а какие могут стоить торговли против целевой производительности:
Execution times (seconds)
 phase setup             :   0.01 ( 5%) usr   0.00 ( 0%) sys   0.01 ( 3%) wall    1454 kB ( 5%) ggc
 phase parsing           :   0.19 (90%) usr   0.12 (100%) sys   0.31 (91%) wall   24281 kB (91%) ggc
 phase lang. deferred    :   0.00 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 3%) wall     451 kB ( 2%) ggc
 phase opt and generate  :   0.01 ( 5%) usr   0.00 ( 0%) sys   0.00 ( 0%) wall     372 kB ( 1%) ggc
 phase last asm          :   0.00 ( 0%) usr   0.00 ( 0%) sys   0.01 ( 3%) wall     225 kB ( 1%) ggc
 |name lookup            :   0.06 (29%) usr   0.00 ( 0%) sys   0.05 (15%) wall    1216 kB ( 5%) ggc
 |overload resolution    :   0.00 ( 0%) usr   0.00 ( 0%) sys   0.03 ( 9%) wall     693 kB ( 3%) ggc
 ...

...