1. 程式人生 > >優化提升Xcode編譯速度

優化提升Xcode編譯速度

前言:

首先在提升專案的編譯速度前,有必要了解一下哪些檔案編譯耗時,GitHub上的一個開源工具:https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode,為我們提供了統計函式編譯時間的功能,利用該工具能很方便的查出編譯耗時的地方。最後根據統計到的編譯時間來進行具體優化。

開源工具使用:

1、開啟前言中所寫連結並下載其Demo,然後開啟下載的Demo並在Xcode中選擇相應的Deployment Target,然後執行,執行成功會出現一個彈出框如下圖:

2、開啟我們要測試的專案,按照彈出框的步驟操作即可,待測試專案執行成功後會出現下圖:

具體優化方案:

一、程式碼層面優化

1、由於在申明物件時沒有指定其型別導致編譯時Xcode進行了大量的型別推斷進而造成編譯時間過長。因此需要儘量避免型別推斷,在申明一個物件時指定其具體型別。

如:var label = UILabel()   ——>  var label:UILabel = UILabel()

2、nil型別問題,由於swift存在可選值,因此某些物件的值可能為空,這在程式碼處理時可能會導致編譯很慢。

3、根據工具測試 ++= 運算比較耗時,參考下圖:

4、根據工具測試複雜的表示式計算會導致執行速度變慢,拆分計算可以加快編譯速度,如下圖:

二、編譯器層面優化編譯時間

方式1、WHO:簡單地說,Whole-Module Optimization(全模組優化,以下簡稱 WMO),即在編譯專案時,將同屬於一個 Module(可以理解為一個 Target、一個 Package)的所有原始碼都串起來,進行整體的一個分析與優化,區別於 Single-File Optimization(單檔案優化,以下簡稱 SFO),WMO 可以更好的統籌全域性,去 inline 函式呼叫、排除死函式(即寫了卻從不呼叫的函式)等等,使編譯速度加快。但是WMO 只是在 Release 模式下成為了預設且推薦的選項,在 Debug 模式下預設依然是 None。


方式2、如果把所有 Model 檔案全部合併到一個檔案去編譯, 那編譯時間會從 1min 35s 減少到 17s,那麼我們如果把所有程式碼檔案都合併到一起,那就可以極大地優化編譯速度了。WHO也會把檔案合併起來再進行編譯,實際使用時我們發現編譯雖然快了,但對於編譯時間的減少還是遠沒有直接把檔案合併到一起那麼有效。 主要原因是因為 WHO 除了合併檔案之外,還會在預編譯階段做這些事情:檢測沒有被呼叫的方法和型別, 在預編譯期去掉它們,給沒有被繼承的類, 沒有被繼承的方法加上 final 標籤,給編譯器提供更多資訊, 以便這些方法被優化為靜態呼叫或者是內聯進去,這些優化會對於程式的效率有很大的提升,但編譯時間會有所增加。而通過增加一個編譯巨集就可以做到只合並檔案, 而不做優化,具體操作如下:

(1)進入工程檔案設定 ---> Build Setting 

(2)如下圖操作:

(3)如下圖操作:設定 key 為 SWIFT_WHOLE_MODULE_OPTIMIZATION,value 設為 YES

總結:

在不更改現有程式碼的基礎上提升編譯速度可選擇上述方式2:增加一個編譯巨集。

相關推薦

優化提升Xcode編譯速度

前言: 首先在提升專案的編譯速度前,有必要了解一下哪些檔案編譯耗時,GitHub上的一個開源工具:https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcode,為我們提供了統計函式編譯時間的功能,利用該工具

iOS進階--提高XCode編譯速度Xcode卡頓解決方案

  提升編譯連結的速度主要有以下三個方式: 1. 提高XCode編譯時使用的執行緒數 defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtas

提高XCode編譯速度

提升編譯連結的速度主要有以下三個方式:1. 提高XCode編譯時使用的執行緒數 複製程式碼 程式碼如下(在終端用命令執行): defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 4 XCode

加快XCode編譯連結速度(200%+)—XCode編譯速度慢的解決方案

轉載自:  http://blog.csdn.net/zhaoxy_thu/article/details/30073485 最近在開發一個大專案的時候遇到一個很頭疼的問題,由於專案程式碼較多,每次都要編譯連結1分鐘左右,除錯的時候很浪費時間,於是研究了一下如何提高編譯

Java動態編譯優化——提升編譯速度(N倍)

一、前言 最近一直在研究Java8 的動態編譯, 並且也被ZipFileIndex$Entry 記憶體洩漏所困擾,在無意中,看到一個第三方外掛的動態編譯。並且編譯速度是原來的2-3倍。原本打算直接用這個外掛,但是發現外掛的編譯原始碼存在我之前已經解決過的記憶體洩漏問題。所以拿其原始碼,進行改

優化Unity編譯速度

插件 優化 leo plugins bsp asset tps 缺點 ati 官方文檔Special folders and script compilation order表示引擎默認就會分四步編譯,那麽只要將不常修改的代碼放到特定文件夾就完事兒了 即:將不常修改的代碼和

【網絡優化|渣速必看】合理設置MTU,提升網絡速度

組合鍵 什麽是 ops 圖片 sign 拆分 vista use blank 可能很少網友註意過“本機、網絡”的“MTU”值對自己網絡性能產生的影響。對於追求更快的下載速度來說,MTU值設置不當,就仿佛穿著高跟鞋跑步一般。MTU是什麽?  “MTU=最大傳輸單元 單位:

阿里零售通 App 工程提效實踐:提升 50% 的編譯速度

前言 當前,大多數 Android 工程都是基於 Gradle 工具進行構建和編譯的,一開始,當你的工程不夠複雜,或者還只是小型專案的情況下,基本都不需要去關心構建優化的事情,而隨著業務變得複雜、程式碼量的增多以及越來越多的依賴,原有的 單 module 工程變成了多 module 工程,構建時間變得也越來

價值888元的wordpress效能優化方案 全面提升wordpress開啟速度

接觸wordpress也些年頭了,wordpress建站非常好,效能好、主題多,但是唯一詬病的就是wordpress開啟速度慢,造成wordpress訪問速度慢的原因有很多,比如字型、表情emoji、外掛、主題等因素。多了就不說了,今天咱們就來解決wordpress訪問速度這個問題。 入局wordp

一分鐘幫你提升Android studio 編譯速度

我們經常遇到AS執行時非常卡的問題,查找了好多資料,終於找到了解決辦法。其實非常簡單,一言不和就上圖: 首先,我們應該找到專案中的gradle.properties這個檔案,開啟後我們會看到如下所示的一些內容: 我們要做的主要是修改紅筆所示的內容:去掉註釋,並在後面加上

優化Android Studio在AMD 2990WX上的編譯速度

由來 一個月前,剁手了AMD Ryzen Threadripper 2990WX(官網),這個處理器的引數著實牛逼,32核心64執行緒,總共80MB的快取,可以說秒殺目前所有的桌面級處理器了!狠了狠心,搞了一臺,輔以32GB DDR4 3200MHz記憶體和9

Android Studio提升編譯速度

1. 專案gradle.properties 檔案裡面加 android.enableD8=trueorg.gradle.daemon=trueorg.gradle.jvmargs=-Xmx81

Xcode提高編譯速度,增量編譯,ccache

前言貝聊目前開發的兩款App分別是貝聊家長版和貝聊老師版,最近因為在快速迭代開發新功能,專案規模急速增長,單個端業務程式碼約23萬行,私有庫約6萬行,第三方庫程式碼約15萬行,單個客戶端的程式碼行數約60萬。現在打包一次耗時需要11~12分鐘。雖然還遠遠比不上 Faceboo

Android Studio優化編譯速度

隨著Android Studio的不斷完善,其安卓開發者陣營也基本從Eclipse轉移到了Android Studio,畢竟Android Studio是谷歌親力親為開發的官方開發軟體。不過其最重

Webpack編譯速度優化實戰

當你的應用的規模還很小時,你可能不會在乎Webpack的編譯速度,無論使用3.X還是4.X版本,它都足夠快,或者說至少沒讓你等得不耐煩。但隨著業務的增多,嗖嗖嗖一下專案就有上百個元件了,也是件很簡單的事情。這時候當你再獨立編前端模組的生產包時,或者CI工具中編整個專案的包時,如果Webpackp配置沒經過優化

VUE專案效能優化實踐——通過懶載入提升頁面響應速度

本文由葡萄城技術團隊原創並首發 轉載請註明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。   最近我司因業務需求,需要在一個內部資料分析平臺整合線上Excel功能,既然我們自己就是做開發工具的,所以目光自然就落在了我司自研的前端表格產品上。 專案的目的是要通過資

Xcode編譯警告Assigning to 'id<XXXDelegat> ——Nullable' from incompatible type 'XXXView *const_strong'

xxx cnblogs 解決方法 strong 可能 警告 pos -1 src 編譯報警告 可能是 自定義分類使用協議時出現與父類協議的沖突 解決方法如下: Xcode編譯警告Assigning to 'id<XXXDelegat> ——

使用子查詢可提升 COUNT DISTINCT 速度 50 倍

原因 desc 精準 http user 計數 而且 -1 nbsp Count distinct是SQL分析時的禍根 首先:如果你有一個大的且能夠容忍不精確的數據集,那像HyperLogLog這樣的概率計數器應該是你最好的選擇。但對於需要快速、精準答案的查詢,一些簡單

Xcode編譯引用Framework

earch width 選擇 mage wid copy 引用 xcod 分享 需要兩步配置 1、在xcode工程的search path下設置要引用的Framework所在路徑 2、將Framewoek拖入工程中時 不要選擇copy,而選擇引用模式。

加快QT工程編譯速度(還可給Qt for Android設置)

qmake targe 沒有 利用 tools too blank tab 這樣的 一、多核編譯 環境:win10, Qt 5.4.1,編譯器mingw32 項目: Qt for Android Qt Creator 在編譯android項目時不支持預編譯,默認cpu