Есть ли какие-либо накладные расходы при использовании классов case в Scala по сравнению с обычными классами? Использует ли он какую-либо дополнительную память, делает больше в строительстве или делает больше в полевом доступе? Или это буквально просто бесплатный equals/hashcode/tostring/apply/unapply/etc для классов внизу иерархии типов?
Мой пример использования - это класс, который заслуживает того, чтобы быть классом case (неизменяемым и равным, если все поля равны), но я в домене, где производительность критическая.
(Пожалуйста, не отвечайте по строкам "перестаньте беспокоиться о преждевременной оптимизации".)