欢迎您访问【千度】zwz39.com-男女爽爽午夜18污污影院,神马午夜羞羞AV,亚洲精品国产不卡在线观看,仙踪林19岁大陆女RAPPER老狼

首頁 > 科技 >正文

什么樣的編譯器才算優秀?

2020-09-24 14:09:03 來源:- 作者:-

在技術正在變化的軟件開發世界中,市場上C++編譯器的數量繼續呈下降趨勢。隨著新的先進C++標準(C/17,C/C/20)的出現,新的指令集擴展,以及更高的代碼優化標準,什么樣的編譯器是好的?

近年來,市場上C++編譯器的數量有所下降。一些知名度較低的編譯器已經退出市場,甚至一度非常受歡迎的Borland(Embarcadero)C++編譯器也不再被維護。隨著新的高級C++標準(C/17,C/20)的出現,新的指令集擴展(例如AVX 512有數百條新指令),以及更高的代碼優化標準,編譯器的構建變得更加復雜。







微軟VisualStudio非常受歡迎,因為它擁有一個用戶友好的集成開發環境(IDE),以及出色的調試和交叉引用功能。但VisualStudio在支持最新指令集方面落后,在代碼優化方面也不是最好的編譯器。

英特爾編譯器曾是代碼優化領域的領軍人物,但現在已被GCC和Clang取代。此外,英特爾編譯器在其隱藏的"致殘的AMD"功能暴露后不再受歡迎。





開源編譯器GCC和Clang現在領先。這兩個編譯器非常相似。它們都支持所有平臺和最新的指令集擴展。

我的一位同事對不同的C++編譯器進行了測試,并在他的C++手冊中列出了測試結果。在代碼優化方面,GCC和Clang編譯器顯然是最好的。在某些方面,clang優于GCC,但在某些方面它往往會出現過循環,這是對代碼緩存的浪費。我不得不承認,當LLVM/族項目啟動時,我對它非常懷疑,但當人們投入大量工作時,Clang編譯器在多種指標上都優于所有其他編譯器。

在Linux和Mac上工作的程序員發現Clang編譯器沒有任何問題。但在Windows上它有點復雜。Windows至少有兩個現成版本的Clang編譯器。Cygwin版本和VisualStudio插件版本。

Clang編譯器的Cygwin版本已經存在多年了,但它并不是最新版本,而且它存在一些性能問題。默認情況下,Cygwin 64版本的Clang使用一個中等內存模型。這是相當浪費的,因為它為靜態變量和常量使用64位絕對地址,而不是32位相對地址。通過指定mcmodel=size可以提高性能。只有在直接鏈接到外部DLL中的變量(在任何情況下,這是一個糟糕的編程實踐)時,才需要使用中等內存模型。Cygwin版本的另一個缺點是,在分發執行器時必須包括CygwinDLL。

微軟提供Cygwin版本作為VisualStudio的插件。同事們的測試表明,它生成了非常優化的代碼。Cygwin插件尚未集成到MSBuild框架中。它現在只支持CMake框架,使用起來相當復雜,因為您必須手動指定Microsoft命令行選項和Clang選項的奇怪組合。實際上,我發現在沒有VisualStudioCMake框架的情況下,使用Clang作為命令行工具更容易。

微軟宣布,Clang和MSBuild框架的全面集成即將到來。我希望微軟能夠兌現這一承諾。我們預計,這種整合可能是優化編譯器和用戶友好的IDE框架的最佳方式,并將盡快實現。

我對英特爾編譯器的未來命運更加不確定。隨著越來越少的程序員實際使用它,英特爾會繼續維護它嗎?英特爾編譯器提供了許多非常有用的函數庫,可以用于許多特殊用途,但這些函數庫的工作方式與其他編譯器一樣。

編譯器是連接人類世界和機器世界的橋梁。它可以將程序員理解的高級語言轉換成機器代碼,以便有效地執行程序。對于一個合格的C/C+開發人員來說,良好的C/C+編譯器是日常工作中不可或缺的輔助工具。



責任編輯:-
亚洲免费在线播放| 国产精品兰桂坊| 五月丁香六月婷婷国产视频|