如何評價golang 1.7?


我只從其它地方評價,因為我不是Go專家。我只是針對Go Release的Blog https://blog.golang.org/go1.7 來談。

看見大家都在談論SSA的改變,而其實Go 1.7的第一個重大提及的其實是Linux on Z的Porting工作,而這裡面有很大一部分工作都是我們上海編譯團隊的Go小組的兩位同事做的,這對Go是好事,因為若想擴大Go的生態圈,是需要更多的平台參與以及努力的,一門語言要走向通用性(如C,C++),無一不是會在各種平台上都有支持,這個世界並不是只有x86。

而SSA的演算法改進,目前我們團隊的Go小組成員也在參與,回饋到社區,而我所知道的是應用SSA以後,在benchmark後是比以前好的,而且好不少。

所以,從這個態勢來看,我是看好Go的,因為大家都在開始為它改善,擴充,不再是Google一家的遊戲,而與Go類似的目前還有SWIFT。


我對go的期待只有一個了:那就是讓cgo變得好用點

語法和使用上,其他已經都很好了啊,

剩下的就是更快更高更強的問題了。


謝邀,對於Golang的認識還停留在Go1.5那次重大的GC改變,看了Golang1.7的介紹,編譯器後端改用了SSA,而且對build方面做了很多優化,這個從github上面的issue上來看,Go1.6存在大量"build: darwin/amd64 builder is sick #15860"之類的構建問題,所以1.7對構建做了較大改動和優化,另外"net/http: receive buffer memory usage increases by 400x with HTTP2 #15930"和一些其他issue表示,Go1.6對HTTP2的處理並不是很好,存在內存使用過多等多種問題,而這些打了Go1.7的標籤,應該是要在1.7裡面解決了。


沒有宏不算什麼大問題,關鍵是沒有同名函數,很多操作interface的方法只能取一些長得像C的名字。

另外,SSA雖然好,但是Cgo有一堆鏈接問題弄得人很頭疼,比如把一個C的靜態庫和Cgo的靜態庫打包在一起,並支持交叉編譯這樣的事。


對用戶而言最大的改良是Link時間減少了50%,整個build過程又回到了過去那種愉快得如跑腳本語言一般的體驗了。


進一步提升GC的性能非常重要,經過測試暫停GC後測試程序性能提升30%左右。

1.6.2相比1.5.4,程序的執行效果並不理想,放眼看github上的大量軟體正式版都是用1.5.4發布,總體感覺1.6是一個過度版本。

golang號稱並發語言,但是runtime庫的性能不夠理想,還需要進行改進。

1.管道chan吞吐極限10,000,000,單次Put,Get耗時大約100ns/op,無論是採用單Go程,還是多Go程並發(並發數:100,10000,100000),耗時均沒有變化,Go內核這對chan進行優化。

2.互斥鎖Mutex在單Go程時Lock,Unlock耗時大約20ns/op,但是採用多Go程時,性能急劇下降,並發越大耗時越長,在Go1.5並發數達到1024耗時900ns/op,Go1.6優化到300ns/op,究其原因,是構建在CPU的原子操作之上,搶佔過於頻繁將導致,大量消耗CPU時鐘,進而CPU多核無法並行。

3.select非同步操作在單管道時耗時120ns/op,但是隨著管道數增加,性能線性下降,每增加1個管道增加100ns/op,究其原因時Go內部不是事件,而是使用沒1ms輪訓的方式。

4.Go調度性能低下,當出現10,000,000Go程時,Go的調度器的性能急劇下降。

編輯於 2016-07-07


1、ssa添加進去了。

2、編譯時間變短了(比1.4還是長)

3、生成文件變小了

4、可以生成二進位的庫了(實驗)

5、vendor機制默認了

6、把x/net/context修改到標準庫了,看了下介面實現,有一部分改變了,所以如果你自己的介面有依賴,可能編譯不過了

7、修改了不少的標準庫

8、增加了一些其他平台上的編譯

還有什麼記不得了,就醬吧。


能不能來個 CPPGO 啊... 我想用 Boost....


推薦閱讀:

如何評價戴維·洛克菲勒的一生?
如何評價電影《終極硬漢》?
如何看待牧狼人云傑吧被封?

TAG:編譯器 | Go語言 | 如何看待評價X |