写点什么

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:003272
用户头像

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

关注

评论

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

详解CAN总线:常用CAN连接器的使用方法

不脱发的程序猿

汽车电子 嵌入式开发 CAN连接器

头脑风暴:最长连续递增序列

HelloWorld杰少

算法 LeetCode 数据结构, 8月月更

加密市场由阴转晴,Zebec或成2022后半段黑马

鳄鱼视界

开源一夏|三步注册gitee

坚果

开源 8月月更

架构训练营毕业总结

joak

SpringMvc如何同时支持Jsp和Json接口?

xiaoxi666

SAFe Day 2022 中国规模化敏捷大会即将开启

爱吃鱼的小雨

敏捷 safe 规模化敏捷 大规模敏捷 SAFeDay

坚叔:让科幻片的概念变成产品丨编程挑战赛 x 嘉宾分享

声网

人工智能 编程‘

开源一夏 | 阿里云ECS之Linux 系统工作命令

六月的雨在InfoQ

Linux 开源 8月月更 系统命令

开源一夏 | 实战Node.js之GET/POST请求在Web 应用架构在客户端的使用

恒山其若陋兮

开源 8月月更

IPv4向IPv6的过渡技术

穿过生命散发芬芳

ipv6 8月月更

智能化运维场景分析

阿泽🧸

智能运维 8月月更

文件管理-Linux系统文件属性

Albert Edison

Linux centos 运维 文件管理 8月月更

开源一夏 | 阿里云ECS之Linux 文本操作命令

六月的雨在InfoQ

vim Linux 开源 8月月更 more

C++多态的基本概念与原理刨析

CtrlX

c c++ 面向对象 代码 8月月更

聚焦2022全球边缘计算大会·深圳站,揭秘火山引擎新一代边缘云解决方案

火山引擎边缘云

分布式 CDN 边缘计算 渲染 边缘云

LabVIEW LINX Toolkit控制Arduino设备(拓展篇—1)

不脱发的程序猿

嵌入式 单片机 LabVIEW Arduino LINX Toolkit

6.18秒杀系统架构设计

joak

在线XML转TSV工具

入门小站

工具

spark实战之:分析维基百科网站统计数据(java版)

程序员欣宸

Java spark 8月月更

Spring进阶(一):SpringMVC常用注解标签详解

No Silver Bullet

springmvc 注解 8月月更

详解CAN总线:什么是CAN总线?

不脱发的程序猿

嵌入式 汽车电子 CAN总线协议

leetcode 304. Range Sum Query 2D - Immutable 二维区域和检索 - 矩阵不可变(中等)

okokabcd

LeetCode 数据结构与算法

MySQL数据库之数据查询

乌龟哥哥

8月月更

RocketMQ高可用设计之同步刷盘

急需上岸的小谢

8月月更

开源一夏 | 阿里云ECS之Linux 文件管理命令

六月的雨在InfoQ

Linux 开源 8月月更 文件管理命令 磁盘命令

《Dubbo3.0.8源码解析》15-Dubbo的三大中心之元数据中心源码解析

宋小生

dubbo Dubbo3

消费大众网民的审丑心理,如何拯救扭曲化的自媒体行业

石头IT视角

在线诺基亚短信图片生成器工具

入门小站

工具

三个线程交替打印ABC100次问题思考

越长大越悲伤

面试 线程 后端 JUC

flstudio21版本有什么新功能?

茶色酒

FL Studio

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