Мне нравится Apple
и то, что они делают, но Swift
... OH GOD!
У меня проблема с временем компиляции `Swift`.
Конфигурация:
- MacBook Pro (Retina, 13 дюймов, середина 2014 года)
- 2,6 ГГц Intel Core i5
- 8 ГБ 1600 МГц DDR3
- SSD 256 (до 800 МБ/с)
- 1k classes
- 10 pods
Время компиляции: 3 мин.
Похоже, что для "новой лучшей и потрясающей быстрой, мечты" этой конфигурации недостаточно, и она работает как Google Chrome
- InfiniteLoop(find free memory - eat)
Я пробовал различные методы для ускорения времени компиляции:
- Установите
HEADERMAP_USES_VFS
вYES
(без изменений)
- Установить
Build Settings / Architectures / Build Active Architecture Only
доYES
(некоторое улучшение)
-
Установите
defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 4
(8) (иногда это становится еще хуже) -
Установите уровень оптимизации на
-Onone
(без существенного улучшения)
- Установить формат отладочной информации -
DWARF
вместоDWARF with dSYM File
- Отключите
Find implicit dependencies
от вашей схемы (нет улучшение)
-
Создал новый проект и переместил все файлы в новый (занимает слишком много времени и уделяет мало времени)
-
Измените компилятор по умолчанию на другие доступные (еще хуже)
-
Строгие правила о том, как быстро скомпилировать код Swift (ниже более подробная информация)
Я нашел несколько сообщений, где люди описывают одну и ту же проблему: здесь и здесь
Я думаю, что все ждут нового Xcode 8.2 beta 2
, где:
Xcode не будет восстанавливать целую цель, когда только небольшие произошли изменения. (28892475)
Но это только отчасти верно, у меня все еще есть длительное время компиляции - от 6 до 12 минут до 3-8. Подробное описание этого можно найти здесь и здесь
Кроме того, я соблюдал все эти правила во время написания кода:
- Сокращение количества функций
- Развертывание опций
- Неявное типирование для объекта (особенно словарь)
- Избежать? оператор (этот очень голодный!!)
- Избегать?: operator
В словах не используйте "новые интересные функции", потому что вы будете ждать целых века.
Еще одна попытка - это обходной путь, описанный здесь:
Перейдите в раздел Product → Scheme → Edit Scheme. Выберите "Сборка" в левой части и снимите флажок "Найти неявные зависимости". Но этот флаг должен остаются проверенными, когда вы строите проект в первый раз.
Но это обходное решение не то, что я ищу, и это также может быть временным решением.
Swift
- это боль не потому, что ее трудно писать, а потому, что ее трудно использовать (по крайней мере на некоторых машинах).
Для сравнения: у меня есть проект на Objective-C
с 2k классами, а 11 pods - чистое время компиляции ~ 30 секунд.
Также я обнаружил много открытых ошибок при быстрой работе:
- SR-2461
- SR-1465
- SR-1707
- SR-663
- и многие другие, список слишком длинный, и некоторые из них были открыты несколько лет назад.
Мой вопрос: