Google的Go語言速度提升

發表於2014-06-28

在經過三個月的公開測試後,Go語言1.3釋出了。相對於1.2,新版本在語言方面沒有變化,主要帶來了效能提升,支援在原生客戶端下執行命令列程式,以及其他一些增強。

最有趣的一些效能和實現上的變化:

  • Go語言執行時的棧從分段記憶體模型改成了連續記憶體模型
  • 垃圾回收更快了:使用併發的清理演算法,這種演算法能更好地並行處理垃圾回收,具有更大的記憶體頁;垃圾回收帶來的停頓時間下降了50-70%。現在也已經可以精確地檢視棧上的變數值了
  • 執行時庫更高效地處理defer語句
  • 競爭檢測器速度提升了40%
  • Regexp(正規表示式的軟體包)現在有了一個新的執行引擎,它使用one-pass演算法,能更快地執行特定的簡單的表示式
  • sync.Pool:一種新的型別,對於可能被系統回收記憶體的快取,這種型別提供了高效的實現機制
  • 對小型map資料型別(不超過8個元素)的迭代不再以固定的順序進行,這麼做是為了防止開發人員寫的程式碼依賴於迭代順序,因為這種程式碼只有在特定的系統上才能正常工作

還有一些工具方面的改進:

  • godoc現在可以對它索引的程式碼進行靜態分析
  • 用Go語言重寫了misc/benchcmp(效能測試工具)
  • 重構了編譯器和連結器,指令選擇階段被移到了編譯器中,這樣做能加速大型專案的增量編譯時間
  • gc工具鏈現在支援在英特爾的32位和64位體系結構上使用原生客戶端(NaCI)執行沙箱。注意Go 1.3產生的二進位制檔案還是不能在Google Chrome中直接執行

還修復了crypto/tls的一個安全問題

你可以從發行說明中獲得所有更新的更多資訊。

相關文章