[獨家] Go1.8大幅改進了海量對象的GC效能(不同語言的橫向對比)

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

眾所周知,Go1.7版本及之前的版本都是針對高並發下的系統吞吐進行最佳化,對海量Object Storage Service時的最佳化力度並不夠。下個版本就是1.8了,那麼1.8會給我們帶來這種驚喜嗎?請繼續往下看。

本次benchmark使用多語言實現,測量的是一個web服務,該服務通過一個大型的hashtable儲存了250K個對象。

該服務還滿足了下述3個前提條件:

1.每次http請求都會添加一個新對象,並且在對象數大於250K時移除一箇舊的

2.每一個對象都是1KB大小的[]byte類型,並且進行了初始化

3.程式監聽8080連接埠,如果請求成功,則返回200,body是"OK"


測試資料:

1.熱身階段:初始化hashtable,進行9K/s的請求數,持續60秒

2.正式階段:啟動99個用戶端,進行9K/s的請求數,持續180秒


初次測試:

程式設計語言(基本上都使用最新版本):

1.Go語言: go1.6.2/amd64,使用fasthttp,因為標準庫的gc存在一些問題

2.ocaml-reason: 學院派的高效能語言

3.node.js

4.haskell:

測試結果:





再次測試:

由於聽聞go1.8對海量對象時的gc進行了最佳化,那我們拉取1.8的master版本進行再次測試

測試結果:

結論:

1.Go1.8 的請求延遲得到了大幅最佳化

2.沒有必要再去使用fasthttp,net/http的延遲一樣很低

3.在開發高並發、低延遲的web程式時,Go是慣用語言之一: 資源佔用低、高吞吐、低延時,效能甚至超過了學院派的ocaml

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.