專案越來越大,每次需要重新編譯整個專案都是一件很浪費時間的事情。Research了一下,找到以下可以幫助提高速度的方法,總結一下。
1. 使用tmpfs來代替部分IO讀寫
2.ccache,可以將ccache的快取檔案設定在tmpfs上,但是這樣的話,每次開機後,ccache的快取檔案會丟失
3.distcc,多機器編譯
4.將螢幕輸出列印到記憶體檔案或者/dev/null中,避免終端裝置(慢速裝置)拖慢速度。 tmpfs 有人說在Windows下用了RAMDisk把一個專案編譯時間從4.5小時減少到了5分鐘,也許這個數字是有點誇張了,不過粗想想,把檔案放到記憶體上做編譯應該是比在磁碟上快多了吧,尤其如果編譯器需要生成很多臨時檔案的話。 這個做法的實現成本最低,在Linux中,直接mount一個tmpfs就可以了。而且對所編譯的工程沒有任何要求,也不用改動編譯環境。 mount -t tmpfs tmpfs ~/build -o size=1G 用2.6.32.2的Linux Kernel來測試一下編譯速度: 用物理磁碟:40分16秒 用tmpfs:39分56秒 呃……沒什麼變化。看來編譯慢很大程度上瓶頸並不在IO上面。但對於一個實際專案來說,編譯過程中可能還會有打包等IO密集的操作,所以只要可能,用tmpfs是有益無...
專案越來越大,每次需要重新編譯整個專案都是一件很浪費時間的事情。Research了一下,找到以下可以幫助提高速度的方法,總結一下。
1. 使用tmpfs來代替部分IO讀寫
2.ccache,可以將ccache的快取檔案設定在tmpfs上,但是這樣的話,每次開機後,ccache的快取檔案會丟失
3.distcc,多機器編譯
4.將螢幕輸出列印到記憶體檔案或者/dev/null中,避免終端裝置(慢速裝置)拖慢速度。 tmpfs 有人說在Windows下用了RAMDisk把一個專案編譯時間從4.5小時減少到了5分鐘,也許這個數字是有點誇張了,不過粗想想,把檔案放到記憶體上做編譯應該是比在磁碟上快多了吧,尤其如果編譯器需要生成很多臨時檔案的話。 這個做法的實現成本最低,在Linux中,直接mount一個tmpfs就可以了。而且對所編譯的工程沒有任何要求,也不用改動編譯環境。 mount -t tmpfs tmpfs ~/build -o size=1G 用2.6.32.2的Linux Kernel來測試一下編譯速度: 用物理磁碟:40分16秒 用tmpfs:39分56秒 呃……沒什麼變化。看來編譯慢很大程度上瓶頸並不在IO上面。但對於一個實際專案來說,編譯過程中可能還會有打包等IO密集的操作,所以只要可能,用tmpfs是有益無...