Go语言 1.3主要改动翻译

来源:互联网 发布:不编程的app 编辑:程序博客网 时间:2024/06/04 19:39

原创文章,转载请注明出处:服务器非业余研究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.一些库的改变和优化(暂不翻译)




0 0