16 comments

[ 4.1 ms ] story [ 15.4 ms ] thread
Needs a 2011 tag.
Yes, and the title was rewritten as well [1].

Submitters: please use an article's title unless it is linkbait or misleading [2].

1. Submitted title was "Google Publishes C++, Go, Java and Scala Performance Benchmarks"

2. https://news.ycombinator.com/newsguidelines.html

IMO the title is misleading, and the submitted title is better. Though "Google Researcher Publishes..." would more accurately state its provenance.

The algorithm encoded in the benchmark is loop recognition, but the purpose of the paper is to benchmark the languages, not to find loops.

That is true, i don't understand y some one changed the tittle
and this phrase on page 7 highlighted

    The benchmarking itself was done in a simple and 
    fairly un-scientific fashion.

    ... older Pentium IV workstation. Run-times were
    measured using wall-clock time.
but still a good read about tweaking c++ (I think at the time, clang and gcc were still implementing the C++11 standard features).

Also i remember long HN threads about this in mid 2011 but i can't find them, here'a a later discussion https://news.ycombinator.com/item?id=4539668

This is really old. C++, Java are mature languages. Scala hit 2.11 in March 2014, while Go version 1 was released in March 2012 and currently is at 1.3. Versions don't tell the whole story, but they do matter.
On the other hand, this:

  // Step d:
  IntList::iterator back_pred_iter = back_preds[w].begin();
  IntList::iterator back_pred_end = back_preds[w].end();
  for (; back_pred_iter != back_pred_end; back_pred_iter++) {
    int v = *back_pred_iter;
    …
can now be written

  for (auto v : back_preds[w]) {
    …                                ,
hence you could argue that while C++ is certainly “mature” in a sense, it is far from converged.
> Go and Scala have powerful type inference, making explicit type declarations very rare. In C++ and Java everything needs to be declared explicitly.

I guess they forgot about C++11's auto?

And "powerful type inference"? For Go? Doesn't it just do local implicit typing using the RHS type straight as the LHS's?