2017-03-28 21 views
6

我有三個項目的iOS:與斯威夫特極長的編譯時間在Xcode

  • 第一個 - 35K斯威夫特LOC,雨燕2.1(?或2.0),使用的Xcode 7.2.3
  • 第二個編譯 - 15K夫特LOC,SWIFT 2.3,使用的Xcode 8.2.1
  • 三一個編譯 - 15K夫特LOC,夫特3.0,編譯使用的Xcode 8.2.1

的編譯時間爲所有這些都是深不可測(10+分鐘爲一個乾淨的版本)和發展噸每個這些正在放緩抓取。

我已經嘗試:

  • 使用Whole Module Optimization
  • 更改C Dialect到編譯器的默認
  • 分析建立了項目時間和優化的瓶頸(即把6-10s與陣列編譯幾個方法串聯,零合併運營商等),其中剃了15秒 - 完全不明顯的差異
  • HEADERMAP_USES_VFS = YES
  • 其他一些我不記得現在

我工作在Mac mini上晚2014年的固態硬盤,8GB RAM & 2.6GHz的酷睿i5,如果該事項。

任何人都知道什麼可能會導致這種情況,該怎麼做,甚至現在有什麼解決方法?從我在SO和其他地方閱讀的內容看來,這似乎是一個未解決的編譯器問題。

編輯:是的,我使用Cocoapods的依賴。我會嘗試轉移到迦太基,看看會發生什麼。

+0

您使用的是椰子樹嗎? – user3581248

+1

你見過這個:https://thatthinginswift.com/debug-long-compile-times-swift/? – vikingosegundo

+0

是的,我正在使用椰子樹,是的,我看過那篇文章。它與類型推斷問題沒有關聯。我已經整理出了代碼瓶頸。 –

回答

5

嘗試在生成設置中設置以下內容作爲解決方法。我假設你只有一個目標。

  1. 將Build Active Architecture僅設置爲Yes。
  2. 將優化等級爲無[-Onone]
  3. 添加一個名爲「SWIFT_WHOLE_MODULE_OPTIMIZATION」,其值爲「YES」
  4. 清空你得到的數據,並建立用戶定義的設置。

然後你也可以使用這個工具來分析任何慢編譯斯威夫特文件:https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode

我正經歷着構建服用6-7分鐘時間。我離開了Cocoapods,並開始使用Carthage來幫助乾淨的構建。即使這樣,構建仍然需要3分鐘。最大的改進來自上面提到的步驟。

更新

,而不是添加用戶定義的設置,在你的調試版本設置的優化級別,以「快,整個模塊優化」的。然後在您的調試版本的其他Swift Flags中添加'-Onone'。

+0

我嘗試了上述步驟,但我還沒有試過移動到迦太基,但可能有所幫助。謝謝! –

+1

這些步驟是否無助於提高編譯時間?根據我的經驗,Swift的編譯時間最大。不要使用您提到的「整體模塊優化」,而是按照我所描述的方式進行操作。 – totiG

+0

我還沒有嘗試過從用戶定義的設置中設置'SWIFT_WHOLE_MODULE_OPTIMIZATION',就像代碼優化設置一樣。我也會嘗試。 –