Google:C++、Java、Scala、Go四种语言性能对比
2011-06-12 00:05
1091 查看
谷歌发布了一个研究报告,仔细比较了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的优化和非优化的测试,但我不希望成为应用程序的规则。”
根据谷歌的测试报告(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的优化和非优化的测试,但我不希望成为应用程序的规则。”
相关文章推荐
- go语言和java+jetty的web hello world 性能测试对比
- Java 与 C++ 的缠绵瓜葛(语言对比)
- Scala和Java在多核处理性能的一次对比和思考
- scala与java的性能对比
- c++性能之对象与指针性能比较、以及java与c++性能对比实测
- JAVA与C++两种语言的对比
- c++ java c#语言特性对比
- 2017年的golang、python、php、c++、c、java、Nodejs性能对比(golang python php c++ java Nodejs Performance)
- Java, Python, Ruby, PHP, C等语言性能对比
- C++程序设计语言练习8.6 异常处理和递归的性能代价对比
- 2017年的golang、python、php、c++、c、java、Nodejs性能对比[续]
- Java, Python, Ruby, PHP, C等语言性能对比
- Go语言到底有没有引用传参(对比 C++ )
- 对比C++和Java语言不同点
- [独家] Go1.8大幅改进了海量对象的GC性能(不同语言的横向对比)
- C++ 与 Java 语言对比
- scala与java的性能对比
- C、C++、Java三种语言语法对比(一)
- Go语言 整数和浮点数性能对比
- GRPC 1.3.4 发布,Google 高性能 RPC 框架(Java C++ Go)