Стоимость боксинга в Scala
Отличная статья с бенчмарками. Для справки: боксинг — это замена примитивного типа (int
) на ссылочный (Integer
) или, в более общем случае, просто увеличение уровня косвенности (когда чтобы добраться до “настоящего” значения нужно больше ссылок).
TLDR:
- Стоимость боксинга зависит от JVM и оптимизаций.
- Opaque-типы почти бесплатны
- ФП-стиль “дороже” императивного при использовании OpenJDK.
- Боксинг довольно хорошо оптимизируется в GraalVM, с ее использованием почти нет разницы, в каком стиле писать.
Комментарии