Automated benchmarking of scalac and performance improvements coming in 2.12.3

I’d like to share a blog post that describes the work that Lightbend’s Scala Team has been busy with this year:

https://developer.lightbend.com/blog/2017-06-12-faster-scala-compiler

We now run compiler performance tests across every merged pull request to help us catch performance regressions. This was motivated by a big regression in the pre-release version of Scala 2.12 which went unnoticed for months, a situation we don’t want to repeat.

The benchmarks helped us pinpoint which changes were responsible for the regression, and we’ve not only restored the baseline performance, but bettered it by 15-30%. More improvements are planned!

4 Likes

Astonishing! When do you guys plan to release 2.12.3?

The PR queue will be winding down soon and we hope to release in late July.

The blog post says “scheduled for July”

Some tidbits that didn’t fit into the blog post.

  • We’re working on benchmarking dotty (friendly competition helps us all!)
  • Likewise, we’ll start measuring performance of compilation within SBT. This currently has more overhead that we like, another area to profile and tune.
  • There is scope to parallelize the work in the compiler backend (bytecode generation and optimization), we hope to enable this in Scala 2.13
1 Like

Nice work!
I’d advice to make the vertical scales of the graphs logarithmic, since performance is about relative times.

Huzzah! Thanks for your hard work here!

Congrats, absolutely amazing work!