文档章节

Go1.9的主要更新(记回家的火车上)

sheepbao
 sheepbao
发布于 2017/06/17 21:45
字数 591
阅读 160
收藏 0

关于

sheepbao 2017.06.16
世上千般伤心事,唯有生离与死别。希望奶奶在天堂幸福,不孝孙子正在回家的路上。
卧铺时漫长,遂有此文。

Go1.9的主要更新

golang每半年更新一次版本,上次最新的版本是Go1.8,而Go1.9将在今年8月释出。
Go1.9中语法的更改只有一个,那就是增加了类型别名,大部分更改是工具链,运行时,库的更改,

语法的更改

Go1.9中增加了类型别名这个语法,类型别名可以更优雅的实现当两个包之间struct的移动。类型别名的语法如下:

type T1 = T2

意思是声明一个T2类型的别名T1.

工具

并行编译

在Go1.9中并行编译啊包是默认的设置,如果需要关闭并行编译,需要设置环境变量GO19CONCURRENTCOMPILATION=0

./...可以匹配vendor了

应各位亲们的要求,之前./...不支持匹配vendor目录下的文件,现在Go1.9支持了。

性能

通常来说,很难去描述这些更改对各种场景的性能影响。大部分程序都应该运行的更快了,因为gc的提升,代码生成的更好和核心库的优化。

垃圾回收

在Go1.9之前,很多库函数都是会触发stop-the-world的,而现在只会触发并发的垃圾回收。比如:runtime.GC,debug.SetGCPerent and debug.FreeOSMemory,现在只会触发并发的垃圾回收,只会阻塞当前正在调用的goroutine,直到gc完成。
debug.SetGCPrercent函数。。。 大对象的分配性能显著的提高,当应用程序使用超大的堆(>50G),里面包含许多大对象。

runtime.ReadMemStats函数现在读取大堆的时间少于100us。

核心库

并发的map

好吧,终于官方支持了,在sync包中新增了Map类型,这个Map是线程安全的map。

time包支持显示单调

Go1.9的time包支持每个Time值都是单调时间,这样能使当系统时间改变的时候,计算两个时间差也是安全的。具体看package docsdesign doc

新的位操作包

Go1.9新增了一个包,叫math/bits,提供一些位操作的优化。

参考

go1.9 release notes

结语

一直不敢相信奶奶走了。。

© 著作权归作者所有

sheepbao

sheepbao

粉丝 7
博文 18
码字总数 16873
作品 1
深圳
后端工程师
私信 提问
一个GO语言性能问题的发现和解决

本文是大 U 同事的一篇实操性经验贴,是发现问题、分析问题到解决问题的完整案例,借此分享,希望对各位有所帮助。 事件起因 事情起因于公司一位同事在内部邮件组中 post 了一个问题,一个使...

UCloudTech
2018/10/29
3.4K
10
回京火车上编码是一种怎样的体验?

今天第一天上班,记录一下昨天回京的笔录。相信你也有一样的感受。自己的笔记,勿喷! 正文 今天是2018年10月7号,长达7日的假期生活已经结束。行走在火车上瞬感无聊,于是拿起了自己手中的电...

codeGoogle
2018/10/30
0
0
Python自动化运维:Django基础

Django 框架 Django基于python语言写的全栈一体式的开源web开发框架, 遵循MVC框架设计。 既然是遵循, 那么肯定有自己的特点, 所以他对MVC进行精简和演变后的框架名称是 MTV。 Model(模型)...

炫维
2017/11/02
0
0
Five Hundred Miles——The Innocence Mission

If you miss the train I'm on 如果你错过了我坐的那班火车   You will know that I am gone 你应明白我已离开   You can hear the whistle blow a hundred miles 你可以听见一百英里外飘...

梦梦阁
2018/09/05
19
0
火车司机月收入说出来吓死你,你知道多少工资吗?

火车司机这个岗位,相信职场中的朋友们都听说过。但很多朋友都会好奇火车司机的工资是多少?会不会和高铁司机差不多。很多职场人都没有见过火车司机,也没见过火车司机工作时的样子。相对于客...

浪花两朵
2017/11/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
今天
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
8
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
9
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
7
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部