Scala:在性能与开发效率中寻找平衡
正如《黑客与画家》作者所说,选择正确的语言对于项目不仅重要,甚至是举足轻重的。至少我曾经在学习除C++意外的新语言的时候,就犹豫过:
在Scala Days 2011,Google的工程师给出了具有参考力的报告。
-
<< Scala Days 2011(2011.06.02 -- 2011.06..3)
http://days2011.scala-lang.org/
Scala的同志们聚在一起开会了,有不少好的话题,我最感兴趣的就是Scala&LLVM和Scala V.S. C++/Go/Java了。
<< Loop Recognition in C++/Java/Go/Scala
有Google好事人民做的Scala/C++/Java/Go的比较,并在Scala Days发表论文,Piaoger之前就留意到这篇论文,正等着它的发表。
下面仅仅摘抄了比较结果:
Code Size in [Lines of Code]: Scala < C++/Go < Java
Scala需要代码行最少,可以达到是其他几种语言的一半甚至更多,有Value。
本以为C++代码难写,比起Java来,还是可以少些活儿。
Compilation Times in [Secs]: GO < Java/C++/Scala fsc << Scala Scalac
Go语言编译起来比较快,而Scala就差强人意了。
Binary and JAR File Sizes in [Byte]: Java < C++/Scala << Go
Go的文件也忒大了,比C++ Debug版本的文件都要大一倍去了,而Scala与C++不分伯仲。
Memory Footprint: C++ < Scala < Go/Java
C++程序启动时间确实要短些,有感觉的。
Run-time measurements: C++ > Scala > Go > Java
总的来说,C++在性能还是高出一筹的,而Scala有望在性能与开发效率上获得平衡;
Go语言还年轻,还有潜力;至于Java,确实不如Scala来得生猛。
原文与源代码: http://code.google.com/p/multi-language-bench
文中还提到了这几种语言的一些优化方法,可以一看。
----