Go语言 1.3主要改动翻译

abv123456789 · · 4956 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

原创文章,转载请注明出处:服务器非业余研究http://blog.csdn.net/erlib 作者Sunface


1、对本地客户端的支持

 Native Client在Go1.3中又重新出现啦,目前来说既可以在32位Inter架构处理器上(GOARCH=386)运行,也能在64位Inter架构运行,但是在64位架构上依然使用的是32位pointer,而且对于ARM架构是暂不支持的。注意这个是本地客户端(NaCI),而不是可移植本地客户端(PNaCI)。NaCI的具体用途可见博主的另一篇博客。


2.栈

Go 1.3改变了旧版本中goroutine的栈实现方式,从分段栈变为连续栈实现。当一个goroutine需要更多的栈空间且超过了当前可用栈大小时,旧栈会被复制到一个单独的更大的内存块。这个转换消耗会被很好的分摊,因此可以避免在分段栈时,一个重复的计算导致栈不停的分配和释放,因此可以避免以前的"hot split“问题。具体的性能改进可见design document(这里稍后会翻译,请持续关注博主的博客大笑


3.栈大小

旧的Go版本中把栈空间的最小值增加为8K字节,对于Go 1.3中的栈,会降低为4K 字节

4.性能
Go的二进制数据在这个版本中很多方面的性能都得到了提升,因为runtime和GC的改变还有一些libraries的改变,重要的改变有以下:
默认栈的大小从8K变为4K 字节;
GC的速度得到了提升,现在是采用了一个并发GC扫地算法,可以更好的并行,使用更大的页,因此可以缩短50- 70%的GC中断时间;
资源竞争的检测快了40%;
正则表达式regexp对于特定的简单表达式进行了优化并显著的提升了性能,因为新版本中实施了新的引擎。其中引 擎的选择是系统自动完成的,具体的细节对于用户是隐藏的;
现在runtime包含了特定的栈信息:记录一个goroutine被阻塞的时间。当发生死锁或者性能问题的时候,这个非常有 用;


5.一些库的改变和优化(暂不翻译)





有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:abv123456789

查看原文:Go语言 1.3主要改动翻译

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

4956 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传