2KB项目,专业的源码交易网站 帮助 收藏 每日签到

Go 1.1 性能提升 —— 第二部分

  • 时间:2019-01-23 18:49 编辑:2KB 来源:2KB.COM 阅读:401
  • 扫一扫,手机访问
  • 分享
摘要:
Go 英文原文:Go 1.1 performance improvements, part 2

这是探索Go 1.1 正式版性能三部曲中的第二部分

在第一部分中我是在AMD64平台下面做的测试,同时包含了在运行时和编译前优化的各项改进.

在本文中,我将重点关注Go 1.1 在 I386平台上面的性能情况。关于本次测试的结果你可以从 linux-386-d5666bad617d-vs-e570c2daeaca.txt.获取。

Go 1 的基准测试 (linux/386)

说到性能, 8g编译器仍处于劣势. 只有少数通用寄存器是允许386构架的程序模型的, 并且会有一些奇怪的限制使得编译器和优化器产生沉重的负担. 然而这并没有阻止Rémy Oudompheng在1.1诞生期间对8g编译器的重大贡献。

首先老的387浮点模型被废弃了(它仍然存在,如果你运行的是很旧的硬件并支持SSE2指令与theGO386=387switch)。

另外,Rémy 尽最大的努力在 6g(及 5g,ARM编译器)代码移植到 8g 过程时改进代码生成。在可能的情况下将代码转移到编译器前端,gc,包括引入一个框架来重写划分为简单的移位和乘法运算

linux-386-baseline

在一般状态下,在该主机上, linux/386 的结果显示改进是有益的,在某些情况下,比 linux/amd64 更好。与 linux/amd64 不同点在于, Gzip 与 Gob 的基准测试并没有减慢。

BinaryTree 和 Fannkuch11 则有些回归,对此的解释被假定因为垃圾回收的精细化。这涉及到对堆中分配的对象大小和类型的一些额外跟踪记账,而正是这些展现在其基准测试之中。

net/http 基准测试

对 net 包的改进在先前的 linux/amd64 文中已经证明,并可以覆盖 linux/386。对 ClientServerbenchmark 的改进并没有同其表亲 amd64 一样被标记出来,但仍在运行时和 net 包之间更紧密的集成方面在整体上表现出显着的改善。

linux-386-net-http

Runtime 微基准测试

和第一篇的amd64基准测试一样,runtime微基准测试显示出了有好有坏的结果。一些低层次的操作变的稍微慢一些,同时,其他一些操作,如map,性能有显著提升。

linux-386-microbenchmarks

最后这两个基准测试,截取了一部分在下面,是因为他们性能提升太多了,屏幕放不下。这个性能提升主要归功于这个变化,其为strings,bytes,runtime包引入了一个更快的低层次的Equals操作。结果不言自明。

benchmark                                  old MB/s   new MB/s  speedup
BenchmarkCompareStringBigUnaligned         29.08      1145.48   39.39x
BenchmarkCompareStringBig                  29.09      1253.48   43.09x

结论

虽然8g不是gc系列编译器中的最好的,(Ken Thompson自己也曾说,386平台基本上没有多余可用的寄存器),linux/386很容易就实现了之前声称的30%-40%的性能提升。甚至在一些基准测试中,相比Go1.0,linux/386打败了linux/amd64

除此之外,由于内存使用的减少,现在所有的编译器在编译时只需要大概之前一半的内存,这样的直接结果就是Go1.1比Go1.0编译速度提高了30%。 我鼓励你去审查autobench代码库中的基准测试数据。如果你有能力,请提交你自己的测试结果。

在这个系列的最后一篇文章中我将关注Go1.1给arm平台带来的性能提升。我向你保证,最后一篇的将是最精彩的。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部