C 編譯為什麼這麼耗資源?編譯個Elemental,用了4個核,記憶體最高耗到10GB

時間 2021-07-01 08:13:40

1樓:泓宇

總結來說:

1.載入編譯大量標頭檔案,且會被編譯多次。開啟和關閉檔案也相當耗時。

2.語法分析極其複雜,嚴重依賴上下文,而且很難消除歧義。這需要很多時間。

3.模板使得編譯器的解釋變的非常複雜,同時加劇了標頭檔案的問題。

4.C++的一次性優化在編譯階段完成。

搬運自 為什麼C ++編譯需要這麼長時間?

2樓:

首先因為C++是乙個編譯型語言,因此,他要翻譯成最底層的機器碼,這樣執行的時候會非常快,也就是通過增加編譯時間來提高執行時效能。其次,編譯本身就是一項很複雜的工作,編譯原理講了那麼多的步驟和操作,不耗時就不正常了。同時,如果對編譯器開了優化的話,他不僅要編譯,還要幫程式設計師優化程式,優化也是一件很複雜的工作,編譯原理都沒敢怎麼講。

而且優化的過程中編譯器還要盡可能的保證優化出來的程式和未優化前的程式執行結果一致。考慮到這些,C++的編譯器速度還是很快的,畢竟都是大牛寫的,而且還要獲得無數大牛的認可,我等渣渣是不用懷疑的。

為什麼同乙個gcc既能編譯核心又能編譯應用?

VizXu 不要覺得核心有啥稀奇的,說白了也是軟體。vmlinux本質上也是乙個elf檔案。不管是核心還是應用,說到底是乙個個機器碼被安排到恰當的位置,機器沒啟動之前,核心和應用都是靜靜地躺在磁碟上的一堆資料。包括gcc本身。 冒泡 編譯原理第一章 編譯器是乙個程式,它可以閱讀用源語言編寫的程式,並...

為什麼這麼多人喜歡寫編譯器?

知語言 今天我把TCC編譯器全部漢化了。其實漢化編譯器也挺有意思的。匯入 zhi.h 如果是 原始檔 匯入 libzhi.c 結束如果 匯入 zhitools.c 匯入 help.c 整數型主函式 整數型引數數量,字元型 引數陣列 知心狀態機 狀態機,s1 s1不能換成其他名稱,對其他檔案有依賴 整...

為什麼C 書上的 h檔案上不加預編譯語句

C primer 中的 2.6.3 節,68 頁 順便請使用 SALES DATA H 而不是 SALES DATA 你的意思應該是防止重複 include 的巨集。這不是語法問題,不加不會在編譯的時候怎麼樣。但是 symbol 重複引入可能會導致鏈結時 duplicate symbol 不明 標頭...