3 回答

TA貢獻1845條經驗 獲得超8個贊
依賴性分析。
在轉到FAQ用于包含下面的句子:
Go提供了一種用于軟件構建的模型,該模型使依賴關系分析變得容易,并避免了C樣式包含文件和庫的大量開銷。
雖然該短語不再是FAQ中的內容,但是在Google的Go討論中對該主題進行了詳細說明,該演講比較了C / C ++和Go的依賴關系分析方法。
這是快速編譯的主要原因。這是設計使然。

TA貢獻1895條經驗 獲得超7個贊
我認為不是Go編譯器很快,而是其他編譯器很慢。
C和C ++編譯器必須解析大量的標頭-例如,編譯C ++“ hello world”需要編譯18k行代碼,這幾乎是源代碼的一半!
$ cpp hello.cpp | wc 18364 40513 433334
Java和C#編譯器在VM中運行,這意味著操作系統必須先加載整個VM,然后才能對其進行編譯,然后再將它們從字節碼JIT編譯為本機代碼,所有這些都需要花費一些時間。
編譯速度取決于幾個因素。
某些語言旨在快速編譯。例如,Pascal被設計為使用單遍編譯器進行編譯。
編譯器本身也可以優化。例如,Turbo Pascal編譯器是用手動優化的匯編器編寫的,該匯編器與語言設計結合在一起,從而使真正的快速編譯器可以在286類硬件上工作。我認為即使是現在,現代的Pascal編譯器(例如FreePascal)也比Go編譯器快。

TA貢獻1817條經驗 獲得超6個贊
Go編譯器比大多數C / C ++編譯器快得多的原因有很多:
主要原因:大多數C / C ++編譯器的設計都非常差(從編譯速度的角度來看)。同樣,從編譯速度的角度來看,C / C ++生態系統的某些部分(例如,程序員在其中編寫代碼的編輯器)在設計時并未考慮編譯速度。
主要原因:快速的編譯速度是Go編譯器和Go語言的有意識選擇
Go編譯器比C / C ++編譯器具有更簡單的優化器
與C ++不同,Go沒有模板,也沒有內聯函數。這意味著Go不需要執行任何模板或函數實例化。
Go編譯器會更快地生成低級匯編代碼,而優化器將對匯編代碼進行處理,而在典型的C / C ++編譯器中,優化將對原始源代碼的內部表示進行傳遞。C / C ++編譯器的額外開銷來自需要生成內部表示的事實。
Go程序的最終鏈接(5l / 6l / 8l)可能比鏈接C / C ++程序要慢,因為Go編譯器正在遍歷所有使用的匯編代碼,也許它還在執行C / C ++的其他額外操作鏈接器沒有做
一些C / C ++編譯器(GCC)生成文本形式的指令(傳遞給匯編器),而Go編譯器生成二進制形式的指令。為了將文本轉換為二進制,需要做一些額外的工作(但不多)。
Go編譯器僅針對少量CPU體系結構,而GCC編譯器針對大量CPU
旨在提高編譯速度的編譯器(例如Jikes)速度很快。在2GHz CPU上,Jikes每秒可以編譯20000+行Java代碼(并且增量編譯模式效率更高)。
- 3 回答
- 0 關注
- 377 瀏覽
添加回答
舉報