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