2017-06-05 48 views
0

在swift中,編譯時間非常慢,項目中的代碼量增加。所以我一直在尋找縮短這個時間的方法。一種方法可能是使用finalstatic等語言關鍵字來改變編譯器在這種情況下使用靜態和動態分派處理代碼的方式。會增加使用動態調度減少編譯時間嗎?

但就我看,最好避免運行時開銷降低動態調度

因此,使用更多的動態調度減少在運行時開銷成本的編譯時間我的第一個疑問是,如果這樣做,我只能在運行。

我的第二個疑問是運行時間開銷太糟糕了嗎?你可以犧牲編譯時間來減少開銷?

+1

一般來說,靜態與動態調度不是編譯速度問題的原因。通常問題是類型檢查,並且在大多數情況下,根據我的經驗,如果構建時間非常慢,問題不在於代碼量,而是由於一個或兩個地方需要很長時間指數型檢查問題。在我的經驗中,最常見的原因是鏈接+,比如'「string」+ x +「more」'。 +花費很長時間來輸入檢查和鏈接對於編譯時間來說是非常糟糕的。 –

+0

@RobNapier謝謝,這對我有很大幫助,所以就性能而言,它更好地避免動態分派以減少運行時間開銷?並且我也不知道是否將代碼作爲框架或庫編譯爲所有語言都是可能的,但是我閱讀這是一種減少編譯時間的方法,因爲編譯器不會執行該框架或庫的所有進程 –

回答

0

爲標題的問題:

編譯時間的函數:

  • 掃描
  • 解析
  • 標誌管理
  • 語義驗證
  • 類型檢查(如@Ron納皮爾指出)
  • 代碼路徑優化
  • 發射機器代碼或LLVM-IR

的步驟中的每一個上面將是什麼技術被用來完成每個結果爲步驟的尺寸和/複雜性的函數你的源文件。在步驟的順序和數量方面有一定的靈活性。

使用動態調度是一個運行時功能,值得另一個問題。

+0

這就是我想知道的,我留下了別人給我的其他答案,我認爲它也非常好解釋爲 https://softwareengineering.stackexchange.com/questions/350165/use-more-dynamic-dispatch-could-reduce-compile-time/350175#350175 –

相關問題