Способы ускорить время сборки? (C#/ Неуправляемый C++)

Устаревшее приложение, над которым я работаю, занимает около 2 часов. Проект насчитывает около 170 проектов, из которых 150 или около того являются неуправляемыми C++, а остальные 30 - C#.Net 2.0.

Какие есть предложения по улучшению времени сборки для чего-то подобного?

5 ответов

Решение

Сосредоточьтесь на проектах C++ - они почти гарантированно будут самыми большими временными затратами на строительство.

Несколько советов по сокращению времени сборки C++:

  • Убедитесь, что вы включаете только заголовки, которые вам нужны в проектах C++!
  • По возможности используйте предварительные объявления в заголовках вместо включения других заголовков
  • Используйте переключатель /MP для параллельного построения, если это возможно
  • Эффективно использовать абстракцию
  • Будьте осторожны при использовании встроенных функций, так как они стоят дороже во время компиляции
  • Получите правильные зависимости, так что вы не будете строить чаще, чем требуется
  • Используйте предварительно скомпилированные заголовки соответствующим образом

Кроме того, если вы говорите о двухчасовой сборке, часто есть и простое, дешевое (в общем виде) решение:

  • Обновите ваше оборудование, чтобы сократить время вычислений

Если вы устанавливаете IncrediBuild на каждую машину, которая должна его собрать, он распределяет процесс сборки по всем машинам. Если вы действительно хотите просто решить проблему с помощью оборудования, вы можете настроить несколько выделенных компьютеров, которые служат только в качестве клиентов IncrediBuild.

В другом масштабе убедитесь, что в каждом проекте правильно скомпилированы предварительно скомпилированные заголовки.

Вы можете попробовать распределенную систему сборки Incredibuild: http://www.xoreax.com/visual_studio.htm

Вы можете использовать такой инструмент, как lint, чтобы увидеть, есть ли у вас избыточные файлы включения в ваших проектах C++.

Есть также отличная статья на эту тему в играх изнутри.

Сделайте несколько решений для проекта, которые включают только соответствующие подмножества проектов, и оставьте одно супер решение для выпусков и т. Д.

Другие вопросы по тегам