Как стать автором
Обновить

Комментарии 4

Еще при разработке мобильных приложений (Android, WP) советуют как можно реже создавать новые объекты, чтобы сборщик мусора работал как можно быстрее и не тормозил систему.

Для решения этой проблемы можно использовать например Объектный пул.
Не при разработке мобильных приложений, а при разработке игровых, причем не сильно важно для PC или для смартфонов. На PC производительность выше, но и игры потяжелее. Причем там даже может не быть GC, но частое выделение памяти серьезно подрежет FPS.
Всё это слишком тонкие материи, чтобы результаты синтетических тестов распространять на все ситуации.
То, что переиспользовать объекты в моменте «быстрей» чем создавать — да. Это было и так ясно без тестов.
Но с другой стороны:
1)мы лишаемся возможности сделать их immutable. Есть много ситуаций где потребуется бОльшая аккуратность и это чревато ошибками с многопоточностью
2)Собирать молодые объекты легко и быстро, но если их много и мы решим их переиспользовать — они быстро станут «старыми» и это приблизит наступление full gc и сделает его более медленным. Так что не очевидно. Опять же когда мне надо несколько миллионов объектов переиспользовать — это может повлиять на соотношение размеров памяти между областями разных поколений.

Так что — надо смотреть в конкретной ситуации и в реальной работе.

Ну, данный пример слегка упрощен.

ЧТобы реализовать object pooling в универсальный механизм сериализации / десериализации придется попотеть.

Много лет назад, когда каждый программист должен был написать свой ORM, я получил существенный выигрыш в реализации такого шаблона при получени данных от базы.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории