谷歌发布了一个研究报告,仔细比较了C + +、Java、Scala和谷歌自己拥有的Go编程语言的性能。
根据谷歌的测试报告(PDF格式),C + +是四种语言中运行速度最快的。 但是该文件同时也指出,优化代码相对困难,这需要相当的努力、熟练的水准,不是平均水平的程序员所能达到。
Go旨在消除至少这个限制一些,但它仍然是年轻的(它首次亮相大约一年,不过前半年只是一种“实验性”语言年),并在大多数谷歌测试中表现出,它落后于C + +以及Java和Scala。 “Go提供了有趣的语言特性:这是一个简洁和标准化的符号,”阅读了报告, GOOGLE创始人罗伯特亨特写下:“[但是]语言编译器仍然是不成熟的:无论是性能和二进制大小方面都反应了该问题。”
这就是说,Go的编译比其他三种语言都要快。 Java和Scala编译成Java字节码,而C + +和Go编译成机器代码。 谷歌目前没有测试并发:一个为Scala和Go特别关注的领域。Go被设计为一个并发语言,提供了C + +的速度,但“感觉”像Python的动态语言。
Scala——一个 面向对象编程和过程语言的之间语言,运行在Java虚拟机上——边缘上运行Java,而且它有一个更小的代码和内存空间。 但它仍然受到的一些限制Java的。 从报告中看到:“Scala [的]简洁的符号语言和强大的代码优化特性,为重复杂性上最好的选择” “Java版本很可能是最容易实现,但最难的性能分析。具体来说垃圾收集的影响周围是复杂,非常难调。由于Scala在JVM上的运行有相同的问题。
与登记册上,上周五在硅谷招待会上公布的报告,Scala的创建者马丁Odersky批准了他的邮票,谷歌的基准,在两个不同的层面运作。
首先,谷歌编码为每种语言,使用语言的惯用容器类基准,循环结构,以及内存/对象分配计划——不使用语言,旨在最大限度地表现特定的工具。 “这种方法允许的语言功能,代码的复杂性,编译器和编译时,二进制大小,运行时间和内存足迹几乎公平比较”的文件说。
再经过测试的结果在谷歌公布,各种谷歌的工程师优化了每个语文基准,并再次运行测试。“虽然这项工作是一个比较轶事只,基准,以及随后的调整努力,都在各自语言的典型表现痛点指示,”亨特说。
Odersky同意,至少在涉及到Scala。 优化后的——这涉及到Scala的功能方面的优势——Scala的代码及其运行时的大小显着减少。 “我特别喜欢这个主意来构建一个角度非专业点的一个算法,通过比较数据,然后...然后挑战人们的优化,”Odersky说。 “从某种意义上说,这是公平的。”
在优化阶段还显示,而C + +提供了最快的运行时间,优化代码是比较困难的。 在优化阶段,开发商还显着地降低了C大小+二进制文件。
据来自Google员工伊恩前往兰斯泰勒在邮件列表发送,很少把工作转到优化之前,该文件的发布,而现在,经过进一步的优化,代码要快得多。 “尽管名称,[表面上转到优化版]代码从来没有打算成为一个地道的或有效率前往。罗伯特[亨特]例子让我看看他的代码,再看一眼,我就砍死了一个小时到做一点点更好。如果我已意识到,他将对外发布,我会使其更好的投入更多的时间,“泰勒说。
但是Scala说Odersky,演出的,譬如他的预期。 “我知道,我们是头到与Java头。这是一个令人惊喜的,我们都优于Java的优化和非优化的测试,但我不希望成为应用程序的规则。”
有疑问加站长微信联系(非本文作者)