Go 1.1.1 发布 引入竞争检查工具

  • Jeff Martin
  • 臧秀涛

2013 年 6 月 27 日

话题:语言 & 开发

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 还有几篇文章详细说明了在i386ARM(包括 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)

语言 & 开发