提公升Xcode編譯效能,RAM磁碟編譯

2021-09-02 16:11:10 字數 1519 閱讀 3335

deriveddata

xcode會在檔案系統中集中的快取臨時資訊。

每次對xcode ios專案進行clean、build或者在ios虛擬機器上launch,xcode都會在derivedata資料夾中進行讀寫操作。換句話說,就是將derived data的讀寫從硬碟移動到記憶體中。

derivedata資料夾中包含了所有的build資訊、debug- 和 release- built targets以及專案的索引。當遇到零散索引(odd index)問題(**塊補全工作不正常、經常性的重建索引、或者執行專案緩慢)時,它可以有效地刪除衍生資料。刪除這個資料夾將會導致所有xcode上的專案資訊遭到破壞。

step 1

將derivedata下的檔案刪除:

rm -rf ~/library/developer/xcode/deriveddata/*
刪除的這些資料,xcode會在build時重新寫入的。

step 2

在~/library/developer/xcode/deriveddata.上部署安裝2 gb大小的ram磁碟。

進到~/library/developer/xcode/deriveddata.

cd ~/library/developer/xcode/deriveddata

建立2 gb的ram磁碟(size的計算公式size = 需要分配的空間(m) * 1024 * 1024 / 512):

hdid -nomount ram://4194304
此行命令後將會輸出ram磁碟的驅動名字:/dev/diskn(n為數字)。

初始化磁碟:

newfs_hfs -v deriveddata /dev/rdiskn
initialized /dev/rdisk3 as a 2 gb case-insensitive hfs plus volume

安裝磁碟:

diskutil mount -mountpoint ~/library/developer/xcode/deriveddata /dev/diskn
這會在已存在的derivedata上安裝乙個卷,用於隱藏舊的檔案。這些檔案仍會佔據空間,但在移除ram磁碟之前都無法訪問。

在重啟或從finder中彈出ram磁碟時,磁碟中的內容將會消失。下次再建立磁碟時,xcode將會重新構建它的索引和你的專案中間檔案。

建立虛擬磁碟後, 並不是直接占用掉所有分配的空間, 而是根據虛擬磁碟中的檔案總大小來逐漸占用記憶體.

注:如果建立的虛擬磁碟已滿, 會導致編譯的失敗. 此時清除掉derived data後重新編譯, 就算有足夠的空間也還是有可能會導致編譯失敗. 重啟xcode可以解決此問題.

對手頭demo進行編譯測試,由於編譯本身讀寫內容較少,耗時較短,都在10s到20s之內,所以提速感覺不明顯,在1s到2s間,也許應用到較大的專案中會有比較好的體現。

參考:   reduce xcode build times

【ios tip】提高xcode編譯速度

提公升Xcode編譯效能,RAM磁碟編譯

deriveddata xcode會在檔案系統中集中的快取臨時資訊。每次對xcode ios專案進行clean build或者在ios虛擬機器上launch,xcode都會在derivedata資料夾中進行讀寫操作。換句話說,就是將derived data的讀寫從硬碟移動到記憶體中。deriveda...

提公升磁碟IO效能的幾個技巧

目前磁碟都是機械方式運作的,主要體現在磁碟讀寫前尋找磁軌的過程。磁碟自帶的讀寫快取大小,對於磁碟讀寫速度至關重要。讀寫速度快的磁碟,通常都帶有較大的讀寫快取。磁碟的尋道過程是機械方式,決定了其隨機讀寫速度將明顯低於順序讀寫。在我們做系統設計和實現時,需要考慮到磁碟的這一特性。fastdfs是乙個開源...

提公升磁碟IO效能的幾個技巧

目前磁碟都是機械方式運作的,主要體現在磁碟讀寫前尋找磁軌的過程。磁碟自帶的讀寫快取大小,對於磁碟讀寫速度至關重要。讀寫速度快的磁碟,通常都帶有較大的讀寫快取。磁碟的尋道過程是機械方式,決定了其隨機讀寫速度將明顯低於順序讀寫。在我們做系統設計和實現時,需要考慮到磁碟的這一特性。fastdfs是乙個開源...