写点什么

Go 1.7 大幅缩短了编译时间

  • 2016-08-18
  • 本文字数:801 字

    阅读完需:约 3 分钟

据谷歌工程师 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

2016-08-18 19:003094
用户头像

发布了 1008 篇内容, 共 406.6 次阅读, 收获喜欢 345 次。

关注

评论

发布
暂无评论
发现更多内容

性能分析优化的道与术

老张

性能优化 性能分析

爱讲故事的计算机科学家,和他的分布式系统

多颗糖

【架构学习08】——设计消息队列存储消息数据的 MySQL 表格

tiger

架构实战营

[Day18]-[动态规划] 打家劫舍3

方勇(gopher)

LeetCode 动态规划 数据结构和算法

[模块8]消息队列存储消息数据的MySQL表格

凌波微步

「架构实战营」

模块八作业:设计消息队列存储消息数据的 MySQL 表格

炎彬

「架构实战营」

你好spring-cloud-kubernetes

程序员欣宸

4月月更

架构实战营:模块八作业

刘璐

消息队列存储消息数据的mysql表设计

五月雨

架构实战营 「架构实战营」

模块8作业

Mr小公熊

Bigdata 作业第七周

Pyel

尤达 DDD 领域驱动设计思想课程总结

代廉洁

尤达DDD领域驱动设计思想

微信小程序开发设计需要注意的五个点

源字节1号

前端 后端 软件开发 小程序开发

作业八

Geek_f3e842

架构实战营

浅谈项目中的需求管理

秋去冬来春未远

需求管理 需求分析 需求和问题

市场进展不断,STI 包括ZB等一系列上线预示着什么?

BlockChain先知

消息队列存储消息数据的 MySQL 表格设计

李大虾

#架构实战营 「架构实战营」

消息队列数据存储表设计

随欣所遇

架构训练营5期

消息队列存储消息数据的 MySQL 表格

阿卷

架构实战营

多系统信息化实施项目注意事项

秋去冬来春未远

数字化 信息化 系统集成 ERP 多系统

开疆作剑,开荒为犁:2022春天,文心大模型走进产业的百花深处

脑极体

设计消息队列存储消息数据的 MySQL 表格

smile

都是分布式操作系统,Laxcus和鸿蒙有何不同?

LAXCUS分布式操作系统

分布式计算 分布式存储 集群架构 鸿蒙系统 分布式操作系统

在线ASCII Banner艺术字生成工具

入门小站

工具

架构训练营模块八

Geek_16d2b8

架构训练营 模块八

模块八作业

Geek_ec866b

架构训练营

linux之rename命令

入门小站

模块3 作业

KennyQ

消息队列MySQL存储设计

石小天

「架构实战营」

消息队列存储消息数据的MySQL表

Fingal

#架构实战营

MQ存储消息的MYSQL表格设计

邹玉麒

架构训练营5期

Go 1.7大幅缩短了编译时间_语言 & 开发_Sergio De Simone_InfoQ精选文章