SkillsCast

Scala - Performance improvements of a factor of 4 to 30, Boxing and Specialization

Before 2.8, the scala compiler compiled generic classes using type erasure, just like Java. However, there is a significant performance drop for primitive types: in order to satisfy the JVM requirements, primitive values need to be boxed when they enter generic code.

Before 2.8, the scala compiler compiled generic classes using type erasure, just like Java. However, there is a significant performance drop for primitive types: in order to satisfy the JVM requirements, primitive values need to be boxed when they enter generic code.

Boxing means wrapping a primitive value in a heap-allocated object. Whenever code operates on such values, it needs first to extract the value from the object, operate on it, then box it back.

Specialization ensures that boxing does not happen, by generating specialized versions of generic code.

Performance improvements may reach an order of magnitude.

In this talk Iulian will look at several specialized classes in the standard library, he will explain how specialization works, the benefits and some potential traps.

YOU MAY ALSO LIKE:

Scala - Performance improvements of a factor of 4 to 30, Boxing and Specialization

Iulian Dragos

Iulian Dragos is a key member of Martin Odersky’s EPFL's Scala team. For the last six years he has been the main contributor for many critical Scala components including the compiler backend, its optimizer and the Eclipse build manager.