TypeSpecialization
The Gist
This isn’t covered by the tour.
My Interpretation
Type Specialization is a feature that allows the Scala compiler to create type-specific versions of classes that take type parameters. For example, if you have a collection of type Collection[T]
, and you specialize T
, the compiler will create not just one class, but one for each primitive type as well as for the object type.
This is entirely transparent to the programmer, and essentially is useful for optimizing code that is being slowed down by autoboxing.
Note that the more type parameters you specialize, the more specialized classes are created, because each combination of primitives must be created to full specialize.
For a great overview, watch this talk from ScalaDays 2010
My Thoughts on This Feature
On one hand, this seems like a hyper-optimization that you should rarely really need. On the other hand, I can’t see a reason not to always do this, so why is it a feature at all? I suspect this is only useful for API writers who need to squeeze every ounce of performance out of their code.