BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Go 1.7大幅缩短了编译时间

| 作者 Sergio De Simone 关注 17 他的粉丝 ,译者 谢丽 关注 11 他的粉丝 发布于 2016年8月19日. 估计阅读时间: 2 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

据谷歌工程师Chris Broadfoot介绍,Go 1.7大幅缩短了编译时间,提高了运行时性能。它还增加了层次化测试和基准测试,并正式支持运行在IBM z系统(s390x)上的Linux

正如InfoQ之前的报道,Go 1.7的编译器改进主要是指,Go有了一个基于静态单一指派(SSA)、面向amd64平台的新编译器后端。得益于包括边界检查消除通用子表达式删除在内的多项高级优化,这个新的后端可以生成压缩率更高、执行速度更快的代码。谷歌的基准测试显示,运行时速度提升了5-35%,而编译时间和二进制代码大小减少了20-30%。事实上,基本测试可能差别很大,而据一些Hacker News用户报告,构建速度提高了2倍。

上面提到,新的SSA后端只适用于amd64平台。不过,据谷歌工程师Brad Fitzpatrick介绍,Go 1.8的主要目标之一就是将其移植到所有支持的体系架构。Fitzpatrick补充说,舍弃以前的后端应该可以同时简化前端,因为前端的研发目前是以新后端功能弱化为前提,需要做更多的工作。这可能会带来更大的性能提升。Go 1.8计划于2017年2月发布。要了解更多细节,请访问GoLang开发论坛

Go 1.7还带来了其他值得注意的变化,包括子测试和子基准测试,让定义层次化测试和表驱动的基准测试成为可能。这是通过为-run-bench标识指定一个由斜杠分隔的正则表达式参数实现的,例如:

go test -run Foo     # 运行匹配“Foo”的顶层测试
go test -run Foo/A=  # 运行匹配“A=”的Foo子测试
go test -run /A=1    # 运行所有匹配“A=1”的子测试

最后,Go 1.7将context包纳入了标准库,让后者成为标准库的一部分。在进行有关网络的操作时,该包可以让取消、暂停和传递请求作用域数据变得更容易。Go 1.7让vendor目录的使用成为标准,使开发人员可以使用外部依赖的本地副本,代替自动从GOPATH或标准库获取。

要全面了解Go 1.7带来的新特性、改进和Bug修复,请查看发布说明

查看英文原文:Go 1.7 Brings Compiler Improvements and More

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT