Go 1.7 改善了编译速度并且会生成更快的代码

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版本相媲美。

====================================分割线================================
文章转载自 开源中国社区[http://www.oschina.net]

时间: 2024-09-16 05:37:32

Go 1.7 改善了编译速度并且会生成更快的代码的相关文章

寄存器的速度为何比内存更快?

从计算机体系结构角度而言,需要把不同速度和容量的memory分层级,得到效率和成本间较好的平衡.最需要经常访问的数据放在速度最快容量最小的L1 cache里,访问量最少的数据放在最慢最大的内存条里,以此类推. 一个相当粗略和不精确的描述如下: 寄存器(register)经常自身就是CPU用的触发器,往往与CPU同时钟同频,当然是最快最方便的.但这玩意一个要20多个晶体管,多了芯片面积吃不消. SRAM的优势在于速度较快,与一般半导体工艺兼容,因此被当作cache放在芯片内部离CPU近的地方,发挥

通过预编译头文件来提高CB的编译速度

C++ Builder是最快的C++编译器之一,从编译速度来说也可以说是最快的win32C++编译器了.除了速度之外,C++builder的性能也在其它C++编译器的之上,但许多delphi程序员仍受不了C++builder工程的编译速度.的确,delphi的速度要比任和c++的编译器都要快好多.Delphi在编译一个小工程的时候可能不到一秒,大的工程一般也在5秒钟这内编译完成了. 为什么delphi会比c++builder快这么多?是否有方法来c++builder的编译速度?本文就讲解了为什么

如何加快C++代码的编译速度

  C++代码一直以其运行时的高性能高调面对世人, 但是说起编译速度,却只有低调的份了.比如我现在工作的源代码,哪怕使用Incredibuild调动近百台机子,一个完整的build也需要四个小时,恐怖!!!虽然平时开发一般不需要在本地做完整的build,但编译几个相关的工程就够你等上好一段时间的了(老外管这个叫monkey around,相当形象).想想若干年在一台单核2.8GHZ上工作时的场景 - 面前放本书,一点build按钮,就低头读一会书~~~往事不堪回首. 可以想象,如果不加以重视,编

如何将iOS项目的编译速度提高5倍

前言 贝聊目前开发的两款App分别是贝聊家长版和贝聊老师版,最近因为在快速迭代开发新功能,项目规模急速增长,单个端业务代码约23万行,私有库约6万行,第三方库代码约15万行,单个客户端的代码行数约60万.现在打包一次耗时需要11~12分钟.虽然还远远比不上 Facebook 的40分钟,但是我们在内测的时候,经常一天要发布内测版两到三次.打包时CPU占用基本上是百分百的,因为没有专门的 CI 机器,对负责打包的同事(其实就是我自己)的工作时间占用比较多,所以最近一直在寻找加快打包速度的方案. 目

Kotlin VS Java:编译速度大比拼,到底谁更快?

把一个Java应用程序转换为Kotlin,编译时间要多久? 这是关于Kotlin的一系列文章.分为三个部分. 第一部分讨论了从Java转换到Kotlin.第二部分是我对Kotlin的看法. 在前面的文章中, 我讨论了把Android 应用从Java 100%转换为Kotlin . Kotlin代码比Java的简洁,更易于维护,所以我认为转换是值得的. 但有些人不想试用Kotlin,因为他们担心它编译可能没有Java快. 这个关注点绝对是正确的,如果变得编译很慢,没有人愿意转换他们的代码. 所以,

java-android studio如何优化编译速度

问题描述 android studio如何优化编译速度 用的avd manager,编译运行,实在太慢了.网上搜的解决办法都有点老.不能使用.求教 解决方案 如果系统的性能达不到,靠软件优化是不现实的. 如果经济允许,在内存4G以下时,考虑增加内存试试:如果内存已经足够大,可以考虑换SSD硬盘. 但还是整体考虑使用电脑的性能. 解决方案二: 从硬件方面考虑的话,加ssd .https://www.aswifter.com/2015/06/14/boost-android-studio/http:

XCode编译速度慢的处理方法_IOS

提升编译链接的速度主要有以下三个方式: 1. 提高XCode编译时使用的线程数 复制代码 代码如下: defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 4 XCode默认使用与CPU核数相同的线程来进行编译,但由于编译过程中的IO操作往往比CPU运算要多,因此适当的提升线程数可以在一定程度上加快编译速度. 2. 将Debug Information Format改为DWARF 在工程对应Target的Build Set

美国主机商IXWebHosting将大力改善主机访问速度

美国主机商IXWebHosting在http://www.aliyun.com/zixun/aggregation/7762.html">国内市场一直享有盛名,为了更好的服务中国站长,近日其更是向中国用户发出了即将大力改善主机访问速度的利好消息.众所周知,IXWebHosting主机一直深得国内站群网站青睐,多个独立IP优势让其所向披靡,如果访问速度也能满足用户需求,其在中国市场的发展将无可限量. 因为从IXWebHosting中文站http://cn.ixwebhosting.com/也

谷歌重视速度:Chrome比去年快了26%

谷歌表示,通过JavaScript基准测试后发现,其Chrome浏览器的速度比去年快上26%."虽然已经有了一些成绩,但我们仍然集中于改善Chrome的速度."谷歌的Toon Verwaest在其博客上表示,"我们成立了一项自动化的测试,在浏览器速度变慢时,会立即通知工程师进行调整." Google对Chrome的改进不仅仅局限于提高JavaScript代码运行速度,还缩短了启动时间. 自4年前发布以来,Chrome市场份额一直在稳步提高,对速度的重视是首要原因.