Работу с кучей замедляют аллокации, сканирование живых объектов, промахи кэша и нагрузка сборщика мусора. Для критичных буферов прежде всего уменьшают создание и удержание лишней памяти.
Что тормозит при работе с кучей? Как избежать влияния GC на критичные буферы?
Работу с кучей замедляют аллокации, сканирование живых объектов, промахи кэша и нагрузка сборщика мусора. Для критичных буферов прежде всего уменьшают создание и удержание лишней памяти.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Работу с кучей замедляют аллокации, сканирование живых объектов, промахи кэша и нагрузка сборщика мусора. Для критичных буферов прежде всего уменьшают создание и удержание лишней памяти.
Переиспользуйте буферы с явным владением, заранее задавайте разумную capacity и измеряйте allocations профилем. []byte без указателей дешевле сканировать, но он всё равно занимает память и должен оставаться достижимым. sync.Pool не гарантирует хранение до следующего обращения. Отключение GC или ручная внешняя память — не бесплатное решение и требуют отдельного обоснования.