Google:C++、Java、Scala、Go四种语言性能对比

jianyi7659 · · 20232 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

谷歌发布了一个研究报告,仔细比较了C + +JavaScala和谷歌自己拥有的Go编程语言的性能。

根据谷歌的测试报告(PDF格式),C + +是四种语言中运行速度最快的。 但是该文件同时也指出,优化代码相对困难,这需要相当的努力、熟练的水准,不是平均水平的程序员所能达到。

Go旨在消除至少这个限制一些,但它仍然是年轻的(它首次亮相大约一年,不过前半年只是一种“实验性”语言年),并在大多数谷歌测试中表现出,它落后于C + +以及JavaScala Go提供了有趣的语言特性:这是一个简洁和标准化的符号,”阅读了报告, GOOGLE创始人罗伯特亨特写下:“[但是]语言编译器仍然是不成熟的:无论是性能和二进制大小方面都反应了该问题。”

这就是说,Go的编译比其他三种语言都要快。 JavaScala编译成Java字节码,而C + +Go编译成机器代码。 谷歌目前没有测试并发:一个为ScalaGo特别关注的领域。Go被设计为一个并发语言,提供了C + +的速度,但“感觉”像Python的动态语言。

Scala——一个 面向对象编程和过程语言的之间语言,运行在Java虚拟机上——边缘上运行Java,而且它有一个更小的代码和内存空间。 但它仍然受到的一些限制Java的。 从报告中看到:“Scala []简洁的符号语言和强大的代码优化特性,为重复杂性上最好的选择” Java版本很可能是最容易实现,但最难的性能分析。具体来说垃圾收集的影响周围是复杂,非常难调。由于ScalaJVM上的运行有相同的问题。

与登记册上,上周五在硅谷招待会上公布的报告,Scala的创建者马丁Odersky批准了他的邮票,谷歌的基准,在两个不同的层面运作。

 

首先,谷歌编码为每种语言,使用语言的惯用容器类基准,循环结构,以及内存/对象分配计划——不使用语言,旨在最大限度地表现特定的工具。 “这种方法允许的语言功能,代码的复杂性,编译器和编译时,二进制大小,运行时间和内存足迹几乎公平比较”的文件说。

再经过测试的结果在谷歌公布,各种谷歌的工程师优化了每个语文基准,并再次运行测试。“虽然这项工作是一个比较轶事只,基准,以及随后的调整努力,都在各自语言的典型表现痛点指示,”亨特说。

Odersky同意,至少在涉及到Scala 优化后的——这涉及到Scala的功能方面的优势——Scala的代码及其运行时的大小显着减少。 “我特别喜欢这个主意来构建一个角度非专业点的一个算法,通过比较数据,然后...然后挑战人们的优化,”Odersky说。 “从某种意义上说,这是公平的。”

在优化阶段还显示,而C + +提供了最快的运行时间,优化代码是比较困难的。 在优化阶段,开发商还显着地降低了C大小+二进制文件。

据来自Google员工伊恩前往兰斯泰勒在邮件列表发送,很少把工作转到优化之前,该文件的发布,而现在,经过进一步的优化,代码要快得多。 “尽管名称,[表面上转到优化版]代码从来没有打算成为一个地道的或有效率前往。罗伯特[亨特]例子让我看看他的代码,再看一眼,我就砍死了一个小时到做一点点更好。如果我已意识到,他将对外发布,我会使其更好的投入更多的时间,“泰勒说。

但是ScalaOdersky,演出的,譬如他的预期。 “我知道,我们是头到与Java头。这是一个令人惊喜的,我们都优于Java的优化和非优化的测试,但我不希望成为应用程序的规则。”


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:jianyi7659

查看原文:Google:C++、Java、Scala、Go四种语言性能对比

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

20232 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传