Я искал использование @specialized
в исходном коде стандартной библиотеки Scala 2.8.1. Похоже, что эту аннотацию используют лишь несколько трейтов и классов: Function0
, Function1
, Function2
, Tuple1
, Tuple2
, Продукт1
, Продукт2
, AbstractFunction0
, AbstractFunction1
, AbstractFunction2
.
Ни один из классов коллекций не является @specialized
. Почему бы нет? Сгенерирует ли это слишком много классов?
Это означает, что использование классов коллекций с примитивными типами очень неэффективно, потому что будет происходить много ненужных упаковок и распаковок.
Какой самый эффективный способ иметь неизменяемый список или последовательность (с характеристиками IndexedSeq
) Int
s, избегая упаковки и распаковки?