基於Clang的快取型C 編譯器Zapcc開源

2021-09-16 19:19:32 字數 1056 閱讀 3335

zapcc是乙個快取型c++編譯器,基於clang/llvm的乙個分支建立,據稱重編譯的速度快50倍,完整構建的速度快2到5倍。由creemple開發,最初在2023年底發布,zapcc現在開源了。

\\ zapcc編譯速度提公升主要是因為使用了乙個編譯伺服器(zapccs),該伺服器駐留在記憶體中,從客戶端接收編譯命令。zapccs僅解析c++標頭檔案一次,並把所有模板例項和生成的**都保留在記憶體中。在這一方面,可以把zapcc視為是以更極端的方式使用了預編譯的標頭檔案,但是,它可以獲得的資訊比預編譯標頭檔案多得多,而且又不需要讓預編譯標頭檔案發揮作用的所有設定。

\\ 在處理十分複雜的c++標頭檔案,尤其是那些使用了模板的標頭檔案時,與clang相比,zapcc特別快。因此,也就不用奇怪,在構建boost::math時zapcc的速度是clang的40倍,在webkit完整構建時快4倍,在clang完整構建時快2倍。類似地,在增量重編譯時,zapcc比clang快50倍。另一方面,當原始檔比標頭檔案複雜很多時,zapcc就提供不了多少好處了,純c專案對於zapcc而言是最壞的情況,根本就不能提公升速度。實際上,zapcc禁止快取c檔案。

\\ 據creemple介紹,由zapcc生成的**其執行時效能和由clang生成的**一樣。

\\zapccs使用的記憶體數量是決定整體效能的乙個重要因素。zapcc允許開發人員設定記憶體限值,當達到限值時,zapccs會使用乙個空的快取自動重啟。如果找不到可用的伺服器例項,那麼zapcc會設法啟動乙個新的伺服器例項,開發人員可以使用-j標識控制併發伺服器最大數量。根據專案的複雜度,伺服器較少而記憶體限值較高時,zapcc可能執行得更快。

\\ 據專案主要開發者yaron keren介紹,zapcc是經過重大修改的clang,修改超過20萬行。我們不認為它有一天會進入clang基線。zapcc意在取代clang和gcc,其目標是與所有構建系統整合。它獲得了linux x64的完全支援。

\\檢視英文原文:caching clang-based c++ compiler zapcc open-sourced

基於Clang的快取型C 編譯器Zapcc開源

zapcc是乙個快取型c 編譯器,基於clang llvm的乙個分支建立,據稱重編譯的速度快50倍,完整構建的速度快2到5倍。由creemple開發,最初在2015年底發布,zapcc現在開源了。zapcc編譯速度提公升主要是因為使用了乙個編譯伺服器 zapccs 該伺服器駐留在記憶體中,從客戶端接...

基於Clang的快取型C 編譯器Zapcc開源

zapcc是乙個快取型c 編譯器,基於clang llvm的乙個分支建立,據稱重編譯的速度快50倍,完整構建的速度快2到5倍。由creemple開發,最初在2015年底發布,zapcc現在開源了。zapcc編譯速度提公升主要是因為使用了乙個編譯伺服器 zapccs 該伺服器駐留在記憶體中,從客戶端接...

Clang編譯器的使用

在linux中安裝clang相當方便 clang version 就會看到當前安裝的clang的版本和目標平台等資訊。在win中使用clang編譯目標檔案如果需要包含頭檔案目錄和庫目錄。所以使用clang編譯命令的時候需要設定包含的include路徑和lib路徑。設定包含標頭檔案路徑和包含庫檔案分別...