Что такое incremental map growth?

Senior
235 просмотров
AFK Offer AI

Incremental map growth — стратегия Go для роста map без больших пауз. Вместо перехеширования всех элементов за раз, Go мигрирует по 1-2 бакета при каждой операции записи. Поле nevacuate в hmap отслеживает, сколько бакетов уже мигрировано. Каждый mapassign/mapdelete вызывает growWork, который эвакуирует следующий бакет. Пока миграция идёт, map хранит и старые и новые бакеты (oldbuckets + buckets). Поиск проверяет флаг evacuated и ищет в нужном массиве. Это amortized O(1) вместо периодических O(n) пауз.

Следующий вопрос

Что такое gRPC metadata?