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

StackOverflow https://stackoverflow.com/questions/1202365

Вопрос

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

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

Это было полезно?

Решение

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

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

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

Помимо этого, если вы говорите о времени сборки в 2 часа, часто существует простое и дешевое (в широком смысле) решение:

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

Другие советы

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

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

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

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

На эту тему также есть отличная статья на Игры изнутри .

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top