Go 1.1 是该语言的一个主要发布版本,在 beta 测试期间,它又带来了一些新特性。只要重新编译代码,开发者就能体验该版本带来的好处。其他特性则需要使用新的库或模式。
性能
如果想看一下性能增长相关的详细信息,可以参考 Go 的贡献者 Dave Cheney 的博客。他撰写了一系列深度文章,详细介绍了 Go 1.1 的性能增长情况。在第1 部分,Cheney 使用Linux/AMD64 平台进行了测试,在1.1 版本上,大多数基准测试的速度都有所提高。有趣的是,Gzip 和GobEncode 的性能略有退化。Cheney 对net/http 包所做的基准测试表明,所有测试都有所改进。但需要说明的是,在Windows 和FreeBSD 平台上的性能与Linux 平台并不匹配,这一状况到 Go 1.2 发布时会有所改观。Cheney 还有几篇文章详细说明了在 i386 和 ARM (包括 Raspberry Pi)上的结果。
处理数据竞争
Go 的工具箱有了很大的增强,这就是用于调试内存同步错误的 Race detector 。在多线程系统中,当两个或多个线程试图同时操作某个数据结构时,竞争条件就出现了。我们可以看一下 Go 的明确说明:“当两个 goroutine 并发访问同一个变量,并且至少有一个访问是写操作时,数据竞争就出现了。”因为这种 bug 的特殊性质,定位和修复往往非常困难,而 Race detector 这一新工具力图简化该过程。这一工具目前可用于 64 位 x86 架构上的 Windows、Linux 和 Mac OS X 等平台。
获得 Go
Go 主要支持的平台包括 FreeBSD、Linux、Mac OS X、Windows 和 NetBSD。支持的硬件平台包括 i386 和 AMD64 架构,FreeBSD 和 Linux 还支持 ARM 架构。 golang.org 网站上提供了 Go 的安装指令,也可以从该网站直接下载 Go。(请注意,当前的版本是 Go 1.1.1,它在 1.1 主要发布版本的基础上修复了一些小bug 。)
查看英文原文: Go 1.1 Races Ahead (Safely)
评论