Швейцарские таблицы

Спустя много лет команда Go решила изменить реализацию map!

Начиная с Go 1.24, она основана на SwissTable и предлагает несколько оптимизаций (со слов разработчиков, лично не проверял):

  • Чтение и запись в больших картах (>1024 записей) быстрее на ~30%.
  • Запись в аллоцированных картах (с установленной емкостью) быстрее на ~35%.
  • Итерация в целом быстрее на ~10%, для карт с низкой наполненностью (большая емкость, мало записей) на ~60%.

Вернуться к старой реализации можно через переменную окружения GOEXPERIMENT=noswissmap при сборке (надо сказать, что не все остались довольны новыми картами).

Если интересно, вот исходники.

★ Подписывайтесь на новые заметки.