博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解读2016之Golang篇:极速提升,逐步超越
阅读量:5891 次
发布时间:2019-06-19

本文共 1408 字,大约阅读时间需要 4 分钟。

Go语言已经7岁了!今年8月,Go 1.7如期发布。撰写本稿时,Go 1.8的测试版也出来了。我们正在热切盼望着明年2月的Go 1.8正式版。

\\

如果你关注就会发现,截止到2016年11月,Go语言从原先的第50多位经过多次上窜已经跃到了第13位,跻入绝对主流的编程语言的行列!这份排行榜每月都会更新,并基于互联网上的程序员老鸟、教学课程和相关厂商的数量进行排名。在国内,从我这几年运营Go语言北京用户组的经历来看,可以明显地感觉到Go语言的在国内的大热。N多初创互联网企业都选用Go语言作为他们的基础技术栈。我还发现,已经有在大数据、机器人等尖端科技领域耕耘的国内公司开始使用Go语言。这门语言现在已经是无孔不入了。

\\

1. 回顾

\\

遥想去年的1.5版本,Go运行时系统和标准库刚完成去C化,转而完全由Go语言和汇编语言重写。到现在,Go的源码已有了较大的改进,Go语言版本的Go语言也更加成熟了。我下面就带领大家一起回顾一下Go语言在2016年做出的那些大动作。你可以对比我之前写的《》来看。

\\

1.1 极速GC

\\

当然,首先要说的还是性能。Go语言本身最大的性能提升依然在GC(garbage collection,垃圾回收)方面。从Go 1.5时标榜的GC耗时百毫秒级,到今天的全并发GC使得耗时达到毫秒级,再到即将发布的Go 1.8由于实施了诸多改进而达成的百微秒级以下的GC耗时,真可谓是突飞猛进!

\\

ff6339f00ff195c422530673a6844fcb.png

\\

图1 GC停顿时间——Go 1.5 vs. Go 1.6

\\

b144895d4724b1a80ca5caf9f8efc09b.png

\\

图2 GC停顿时间——Go 1.7

\\

在经历了如此变化之后,如果你现在再说你的Go程序的性能瓶颈在GC上,那只能让人侧目了。

\\

当然,Go语言对自身性能的提升远不止于此。

\\

1.2 对HTTP/2的支持

\\

很早以前,Go语言团队就开始跟进HTTP/2草案了。从Go 1.6开始,我们其实已经可以间接地在Go程序中使用到HTTP/2了,应用场景如:使用Go程序开发基于HTTPS协议的服务端和客户端。不过,这一切都是自动适配的,Go官方并未暴露出可以指定或配置HTTP/2模块的任何API。另外,在还未发布的Go 1.8中,HTTP/2还会得到更广泛的支持。

\\

1.3 httptrace包

\\

Go 1.7的标准库中新增了net/http/httptrace代码包(https://godoc.org/net/http/httptrace)。它提供了一种调试HTTP请求和响应的方式。你可以像下面这样轻易地获取基于HTTP协议的通讯过程的详细信息。

\\
\package main\\import (\\t\"context\"\\t\"fmt\"\\t\"log\"\\t\"net/http\"\\t\"net/http/httptrace\"\\t\"os\"\)\\func main() {\\ttraceCtx := httptrace.WithClientTrace(context.Background(), \u0026amp;httptrace.ClientTrace{\\t\tGetConn: func(hostPort string) {\\t\t\tfmt.Printf(\"Prepare to get a connection for %s.\\

转载地址:http://xhfsx.baihongyu.com/

你可能感兴趣的文章
动画 球
查看>>
C++中的堆,栈,静态内存区,常量区
查看>>
动态SQL实现与注意事项(有返回值与无返回值动态SQL 实现)
查看>>
java struts2 debug
查看>>
Android图片圆角效果
查看>>
WeChat Official Account Admin Platform API Introduction
查看>>
C语言写单链表的创建、释放、追加(即总是在最后的位置增加节点)
查看>>
C# LINQ详解(一)
查看>>
视频直播点播nginx-rtmp开发手册中文版
查看>>
ruby学习总结04
查看>>
Binary Tree Paths
查看>>
Ueditor自定义ftp上传
查看>>
线程以及多线程
查看>>
PHP队列的实现
查看>>
单点登录加验证码例子
查看>>
[T-SQL]从变量与数据类型说起
查看>>
occActiveX - ActiveX with OpenCASCADE
查看>>
iOS8中定位服务的变化(CLLocationManager协议方法不响应,无法回掉GPS方法,不出现获取权限提示)...
查看>>
BeanUtils\DBUtils
查看>>
VC 创建托盘,托盘tooltip。右键托盘菜单,点击别的地方会隐藏掉的问题。
查看>>