2017-03-28 10 views
6

Mam trzy projekty: iOSNiezwykle długie czasy kompilacji z Swift w Xcode

  • Pierwszy z nich - 35k LOC Swift, Swift 2.1 (?), Lub 2,0 skompilowane przy użyciu Xcode 7.2.3
  • drugi - 15k Swift LOC, Swift 2.3, skompilowany przy użyciu Xcode 8.2.1
  • trzeci - 15k Swift LOC Swift 3.0, skompilowany przy użyciu Xcode 8.2.1

kompilacji razy na wszystkie z nich są fatalne (10+ minut na czysty build) i developmenów t na każdym z nich zwalnia do indeksowania.

Próbowałem już:

  • Korzystanie Whole Module Optimization
  • Zmiana C Dialect do kompilatora Wartość domyślna
  • Analizując budowę razy dla projektu i optymalizacji wąskich gardeł (kilka metod, które miały 6-10s skompilować z tablicy konkatenacja, zero operatorów koalescencji itp.), który golił się 15 sekund - zupełnie niezauważalna różnica
  • HEADERMAP_USES_VFS = YES
  • kilku innych nie pamiętam teraz

Pracuję na Mac mini późnego 2014 z SSD, 8GB RAM & i5 2,6 GHz, jeśli się liczy.

Ktoś wie, co może spowodować to, co z tym zrobić, a nawet na razie obejść? Z tego, co czytałem na SO i innych miejscach, wydaje się, że nierozwiązany problem z kompilatorem.

EDYCJA: Tak, używam Cocoapods dla zależności. Spróbuję przenieść się do Kartaginy i zobaczyć, co się stanie.

+0

Czy używasz cocoapodów? – user3581248

+1

Czy widziałeś to: https://thatthinginswift.com/debug-long-compile-times-swift/? – vikingosegundo

+0

Tak, używam cocoapodów i tak, widziałem ten artykuł. Nie ma związku z problemami z wnioskami typu. Już poznałem wąskie gardła kodu. –

Odpowiedz

5

Spróbuj ustawić następujące ustawienia w Ustawieniach kompilacji jako obejście tego problemu. Zakładam, że masz tylko jeden cel.

  1. Ustaw opcję Buduj aktywną architekturę tylko na Tak.
  2. Set Optymalizacja Poziom None [-Onone]
  3. Dodaj ustawienie User-Defined nazwie "SWIFT_WHOLE_MODULE_OPTIMIZATION" o wartości "TAK"
  4. opróżnić swoje dane pochodzące i budować.

Można również wtedy użyć tego narzędzia do analizy jakiekolwiek powolne kompilacji plików SWIFT: https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode

ja przeżywałam budować razy, że brali 6-7 minut. Odsunąłem się od Cocoapods i zacząłem używać Carthage, która pomogła w czystych buildach. Nawet wtedy kompilacje trwały jeszcze 3 minuty. Największy postęp nastąpił dzięki krokom, o których wspomniałem powyżej.

Aktualizacja

Zamiast dodawania ustawienia zdefiniowane przez użytkownika, na kompilacji Debug ustawić poziom optymalizacji „Szybka, cały moduł optymalizacji”. Następnie w innych znacznikach Swift dla swojej wersji debugowania dodaj "-Onone".

+0

Próbowałem wykonać powyższe kroki, ale nie próbowałem jeszcze przejść do Carthage, co mogłoby pomóc. Dzięki! –

+1

Czy kroki nie pomogły w poprawie czasów kompilacji? Z mojego doświadczenia wynika, że ​​to największy impuls do czasów kompilacji Swift. Ważne jest, aby nie używać "Optymalizacji całego modułu", o której wspomniałeś, a zamiast tego zrobić to w sposób opisany przeze mnie. – totiG

+0

Nie próbowałem ustawić "SWIFT_WHOLE_MODULE_OPTIMIZATION" z ustawień zdefiniowanych przez użytkownika, podobnie jak ustawienie optymalizacji kodu. Spróbuję też. –

Powiązane problemy