最近Go发布了1.10版本,引入了cache等重要特性。Russ Cox去年11月份的时候在邮件列表golang-dev里发了一篇帖子说明了这几个变化。帖子的地址是: https://groups.google.com/forum/#!topic/golang-dev/qfa3mHN4ZPA

Build Cache

意思就是会把编译过程的中间结果cache下来,从而实现增量编译。原来需要通过go build -i命令来实现,现在go build命令默认启用了cache。启用cache后的效果是很明显的,我司的一个大程序的编译时间如下:

  • 全新编译,耗时107秒。
  • 修改一个文件后,再次编译,耗时22秒。

Test Cache

测试现在也默认启用了cache,在内容没有变化的情况下,对于同样的参数的测试,会直接使用cache的测试结果,也就是同样的测试不会重复跑。当使用cache的结果时,go test命令最后会显示 (cached) 的字样:

➜ ~/go/src/project git:(feature)$ go test project/dp/master
ok      project/dp/master    (cached)

Cache Path and Clean Cache

cache默认的存储路径是操作系统所确定的用户缓存目录,但是可以通过GOCACHE环境变量修改。在Ubuntu下的默认cache路径是 ~/.cache/go-build

如果要清除cache,可以使用如下两个命令:

  • go clean -cache 清除build cache。
  • go clean -testcache 清除test cache。

知识共享许可协议本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。