sheepbao 2017.06.16
世上千般傷心事,惟有生離與死別。但願奶奶在天堂幸福,不孝孫子正在回家的路上。
臥鋪時漫長,遂有此文。golang
golang每半年更新一次版本,上次最新的版本是Go1.8,而Go1.9將在今年8月釋出。
Go1.9中語法的更改只有一個,那就是增長了類型別名
,大部分更改是工具鏈,運行時,庫的更改,安全
Go1.9中增長了類型別名這個語法,類型別名能夠更優雅的實現當兩個包之間struct的移動。類型別名的語法以下:併發
type T1 = T2
意思是聲明一個T2類型的別名T1.函數
在Go1.9中並行編譯啊包是默認的設置,若是須要關閉並行編譯,須要設置環境變量GO19CONCURRENTCOMPILATION=0
。工具
應各位親們的要求,以前./...
不支持匹配vendor
目錄下的文件,如今Go1.9支持了。性能
一般來講,很難去描述這些更改對各類場景的性能影響。大部分程序都應該運行的更快了,由於gc的提高,代碼生成的更好和核心庫的優化。優化
在Go1.9以前,不少庫函數都是會觸發stop-the-world的,而如今只會觸發併發的垃圾回收。好比:runtime.GC
,debug.SetGCPerent
and debug.FreeOSMemory
,如今只會觸發併發的垃圾回收,只會阻塞當前正在調用的goroutine,直到gc完成。
debug.SetGCPrercent
函數。。。 大對象的分配性能顯著的提升,當應用程序使用超大的堆(>50G),裏面包含許多大對象。線程
runtime.ReadMemStats
函數如今讀取大堆的時間少於100us。debug
好吧,終於官方支持了,在sync包中新增了Map
類型,這個Map是線程安全的map。code
Go1.9的time包支持每一個Time值都是單調時間,這樣能使當系統時間改變的時候,計算兩個時間差也是安全的。具體看package docs和design doc
Go1.9新增了一個包,叫math/bits,提供一些位操做的優化。
一直不敢相信奶奶走了。。