The algorithm created by Google was a simple one that makes use of many language features such as “higher-level data structures (lists, maps, lists and arrays of sets and lists), a few algorithms (union/ﬁnd, dfs / deep recursion, and loop recognition based on Tarjan), iterations over collection types, some object oriented features, and interesting memory allocation patterns”
What the algorithm doesn’t explore are “aspects of multi-threading, or higher level type mechanisms, which vary greatly between the languages”
The benchmark algorithm itself is open source and available at Google Code. This includes the optimized versions of the benchmark for all languages except C++, since that code depends on code Google would rather nor open-source.
When it comes to the size of code, Scala and Go implementations were much shorter than the C++ and Java versions.In compilation time, Google’s Go comes out at top, with even the fastest compilation times of other languages being 5 times slower.
On the other hand, Go has the largest compiled binary sizes, of as much as 94 times that of Java. Since Java and Scala are compiled to bytecode, they tend to be smaller, but not much smaller than the optimized C++ build. In memory usage, C++ has the advantage, followed by Scala, Go and last Java.
In terms of performance, Google’s conclusion indicates that C++ is the best performer by a large margin, but “required the most extensive tuning efforts, many of which were done at a level of sophistication that would not be available to the average programmer”
Scala and Java run on the same JVM, and hence has the same issues in analyzing performance, and tuning garbage collection. Scala, however “allowed for the best optimization of code complexity”
Go was deemed interesting, but immature looking at the performance and binary sizes.
HERE is the full report from Google in PDF format.
Source : Thinkdigit