Zapcc:一个更快的C++编译器
from:?http://geek.csdn.net/news/detail/126456
原文:zapcc - a faster C++ compiler?
作者:Baptiste Wicht?翻譯:賴信濤?責編:仲培藝
我剛剛加入了一個Zapcc的beta項目,它基于Clang,致力于做到比其他C++編譯器更快。為了做到這一點,采取的方法是將一些編譯器的結構緩存在服務器上,可以大幅度提高編譯速度。目前的beta版本是免費的,但等發布就緒之后,將會是一個商業編譯器。
每一個C++程序員都知道,當項目變得龐大之后,編譯時間將會成為一個很大的問題,尤其是一些template-heavy的代碼。
為了評測這款新的編譯器,我將用我自己的Expression Template Library?(ETL)。這是一個帶有很多templates的header-only的庫,里面包含很多需要編譯的test case。我將拿他來和Clang=3.7和gcc-4.9.3作比較。
測試環境中,我讓zapcc使用2Go RAM,每次測試之前關閉服務器一次。
Debug build
讓我們先從debug build開始。在這個build中,優化被關閉,一些庫的feature(GPU,BLAS等)被禁用。這是編譯ETL的最快方式。測試環境是四核八線程英特爾處理器,SSD硬盤。
下面這個表格顯示了在不同的線程數量下,Zapcc和其他編譯器的表現。
結果非常明顯:Zapcc幾乎是Clang速度的三倍,GCC速度的兩倍。很了不起!
這里,要提醒那些以為Clang總是會比GCC快的人,記住在這樣template-heavy的代碼的情況下并非如此。在我的測試中,Clang幾乎總是比GCC慢,吃更多的內存。
還有一點,在我的這臺電腦上,可以看出物理核心的增加導致的編譯速度增加并不是很明顯,所以基準很重要。
Release Build
現在,讓我們來比較一下release build的編譯速度。這種情況下開啟了所有的ETL選項,所以耗時也自然會更多一些。
結果如下表:
這次我們發現,差距小了很多。Zapcc比Clang快1.2-1.4倍,比GCC快1.1-1.3倍。這證明了Zapcc大部分的速度提升都是前端方面的。雖然并不是很多,但是對于很多時間長的build來說也很有意義,特別是在擁有的線程數量不多的時候。
從上表中也可以看出,Clang幾乎和GCC速度相當,我們也可以推測出,優化方面Clang速度更快,前端和后端GCC更快。
因為緩存,Zapcc的內存消耗比Clang更高,而且在匯編時,服務器依然是運行的。
至于運行時,我并沒有看到Clang版本和Zapcc版本有更多不同。根據官方的標準和文檔,Zapcc是基于Clang的,所以它們運行時性能不會有很大差別。
Incremental build
理論上講,Zapcc在Incremental build方面應該會有很大的性能提升,但是這這里不關閉服務器的情況下,并沒有看到很大的性能提升。也許我的配置有誤吧。
結論
在上面的測評中,我們可以看到在我的template-heavy庫中Zapcc總是比GCC和Clang快。而且在debug build中,它的性能提升非常突出,幾乎是GCC速度的兩倍,Clang速度的3倍。到現在為止,我并沒有看見這個工具出現任何問題,它完全可以替代Clang。
不過不能給Zapcc分配2G以上的內存,有點奇怪。
作為一個程序來說,它很給力,希望能繼續加油,為編譯器的優化帶來更多動力。
官方網站:zapcc
總結
以上是生活随笔為你收集整理的Zapcc:一个更快的C++编译器的全部內容,希望文章能夠幫你解決所遇到的問題。

- 上一篇: 深度学习的40种应用
- 下一篇: 深度学习的五个能力级别