春争日,夏争时,扫码抽取夏日礼包!!! 了解详情
写点什么

Go 1.7 会提升编译速度并且会产生更快的代码

  • 2016 年 4 月 24 日
  • 本文字数:773 字

    阅读完需:约 3 分钟

Go 1.7 的开发周期即将接近下一个里程牌版本,不过Go 的提交者Dave Cheney报告了在即将发布的释放版本中,团队在提升语言工具链方面所做的努力。

Cheney 指出,基于当前的开发状态,Go 1.7 将会很轻易地成为史上最棒的 Go 释放版本。在工具链提升方面的努力主要聚焦在两个领域:

  • 编译和连接时间;
  • 代码生成。

在编译时间方面,自从由C 转向Go 以来,Go 编译器就饱受较差的性能所困扰。这个问题已经有了很多的讨论,在面向Go 1.7 的版本中,最近的工作已经完成,它致力于减少编译器所使用的内存量并且在连接时间方面也有所提升。相对于Go 1.5.3,这能够将总的编译时间降低大约20-30%,如下图所示:

我们可以看到,Go 1.4.3 编译器的性能依然要明显优于当前的1.7 版本。不过,当前的性能提升也不应该被低估,尤其是新的Go 编译器包含了一个全新的代码生成后端,在性能方面,它还没有完全成熟。

还需要提及的是自举(bootstrap)Go 编译器的决策其实与性能无关,而是使用Go 来取代C 会在开发方面所带来的优势,这包括易于编写正确的代码、调试、更好的工具以及对并行的支持等等。实际上,Go 编译器的代码是从C 代码库自动转换得到的,而不是完全重写的。

如前文所述,代码生成是Go 1.7 另一个主要关注的领域。新的后端改成了使用静态单一分配形式(static single assignment,SSA),这与 LLVM 和其他编译器相同,这样能够对生成的代码启用多项优化。其中包含无用代码消除(dead code elimination)、寄存器分配(register allocation)、栈帧分配(stack frame allocation)等。如Cheney所述,在当前的初步开发版本中,Go 1.7 新的SSA 后端所产生的代码在速度上能够最高提升20%。另外,相对于Go 1.6,它所产生的二进制会更小,在很多方面,这个版本能够与Go 1.4 版本相媲美

查看英文原文 Go 1.7 to Improve Compilation Speed and Generate Faster Code

2016 年 4 月 24 日 19:003334

评论

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

奈学干货分享:分布式CAP实践分析

奈学教育

分布式

Android 通过opencv实现人脸识别,追踪

sar

android OpenCV 人脸识别

从位图到布隆过滤器

王坤祥

位图 布隆过滤器

kudmp介绍和安装

唯爱

神经网络中为什么不能将权重初始值设置为一样的值

王坤祥

神经网络 学习

2020智源-京东多模态对话挑战赛开战 产学研联合推动AI技术发展

DT极客

Mysql常用删除方式比较

云也退

MySQL

架构师训练营0期开营

刁架构

架构师

「首度揭秘」大规模HPC生产环境 IO 特征

焱融科技

sds io 高性能 存储 焱融科技

你有信息焦虑症吗?

Neco.W

学习 创业 知识体系

Nginx 入门及命令行操作

子杨

nginx 运维

卧槽,接到一个阎王的需求

码农神说

程序员

Weex开发:页面跳转以及Android端多应用选择窗口的处理

brave heart

android Vue 大前端 跨平台 Weex

工厂模式(三)泛型工厂的概念以及示例代码

LSJ

Nginx 基础原理和命令行的真相

子杨

nginx 运维

备案问题汇总

云也退

网站 备案

图片与标题的Ken Burns动效

寇云

CSS css3

Spring源码

云淡风轻

spring 源码

ARTS_20200529

凌轩

Java ARTS 打卡计划

产业区块链:产业是本质,区块链是工具

CECBC

新基建 CECBC 区块链技术 中国电子

10分钟了解Flink

代码诗人

基于 Markdown 的中文文档排版规范

Murphy

markdown 排版规范 GitHub GFM 物联网学前班

为什么你要学习 Go?

司徒公子

编程语言 谷歌Google Go 语言

终于找到了一篇文章!通俗地讲解计算机工作原理

图灵社区

cpu 存储器 编译器 计算机工作原理

k8s 上运行我们的 springboot 服务之——大文件读写

柠檬

Java nio

GrowingIO 大数据多维分析自动化测试实践

GrowingIO技术专栏

大数据 自动化测试 parewise

幂等问题及解决方案

Joker

幂等 解决方案

我们可能都误解了什么是情商

董一凡

情绪

阿里巴巴为什么让初始化集合时必须指定大小?

王磊

Java 性能

Cassandra可调一致性的使用及原理

老任物联网杂谈

大数据 分布式 Cassandra 可调一致性

Vol.10 Java 25岁了!

pyfn2030

Java jdk 编程语言 Java25周年

Go 1.7会提升编译速度并且会产生更快的代码_语言 & 开发_Sergio De Simone_InfoQ精选文章