Когда использовать функцию распределенной сборки XCode - PullRequest
9 голосов
/ 07 февраля 2011

Я работаю в небольшой команде разработчиков iPhone, в нашем офисе, у нас есть как минимум 4 копии XCode, работающие в сети одновременно. Созерцая, чтобы все работали.

Мы объединены в сеть с помощью стандартного коммутатора WIFI, поэтому скорость и задержка в сети не так хороши, как в проводной сети ...

Просто интересно, есть ли реальная выгода от использования распределенных сборок? Как только он передает соответствующие данные назад и вперед по сети. По крайней мере, для относительно небольших проектов.

1 Ответ

4 голосов
/ 07 февраля 2011

это зависит от вашего проекта, его зависимостей и объема данных, которые должны быть переданы.

15-20 секунд не страшно. безусловно, в целом предстоит еще много работы. для всех может быть хорошей идеей использовать его на очень быстром Mac Pro, а не друг другу, если вы используете двухъядерные процессоры (эта информация не была предоставлена).

в отношении конфигурации проекта: если в ваших проектах есть несколько зависимых библиотек, это может помочь отключить скомпилированные заголовки. большая часть уравнения - это среднее число зависимостей и количество генерируемых объектов.

через 15-20 секунд, это поможет многим разработчикам писать, чтобы они оптимизировали время сборки, прежде чем приступить к работе. если бы это было несколько минут, то вы можете сразу перейти к распределенным сборкам с ядром 8 или 12.

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

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

в предположении, что время, затрачиваемое на компиляцию, компоновку и т. Д., - это время, которое затрачивается на данный момент: большая часть остального приходится на типичные проблемы, связанные со сборкой программ на c и c ++. минимизировать ваши зависимости и включить графики. это на самом деле довольно легко сделать с помощью objc; поскольку большая часть интерфейсов использует objc-типы, вы можете использовать forward.

если ваша библиотека небольшая (например, сгенерировано менее 50 объектов), то вы также можете получить ускорение, не используя предварительно скомпилированные заголовки. если все уже зависит от вашего включения 12 системных платформ, включенных в pch ...., попробуйте это в следующем проекте.

конечно, вы можете просто попробовать синхронизировать чистую перестройку, сборку с сгенерированными файлами pch и несколько инкрементных сборок, чтобы прийти к выводу.

...