Nova versão do Go usa Swiss Table para melhorar a eficiência de seus maps, mas o que é uma Swiss Table?
Salve, beleza?
Enquanto lia as notas de release do Go 1.24, notei que uma das melhorias foi alterar a antiga implementação de Map para usar Swiss Table.
Sem saber o que era uma Swiss Table, decidir estudar sobre o assunto.
Depois de ler bastante, escrevi um artigo explicando:
- A antiga implementação (Que usa Chaining)
- A nova implementação (Que usa Swiss Table, linear probing e SSE3)
- Uma possível futura implementação (baseada em um artigo acadêmico de Janeiro deste ano, que propõe melhorias a linear probing)
Se você não sabe o que significa cada um desses termos: calma, tá tudo bem.
Eu também não entendia quando os vi pela primeira vez.
Se você curte algoritmos e estruturas de dados eficientes, recomendo meu novo texto: "Go 1.24 Uses Swiss Table—What Are They?"
Se não for pedir muito, deixe seu feedback, me ajudaria bastante.
Valeu e até a próxima,
Grande abraço!
Ótimo post, Codista! É um lembrete de que ainda há muito espaço para pesquisa e inovação em estruturas de dados, mesmo em áreas que consideramos "fundamentais".
A gente tende a pensar que tudo já foi resolvido nos anos 80, mas com o avanço da tecnologia, o uso de caches e multicores, surgem novos desafios e oportunidades
Valeu por compartilhar essa descoberta! 👏 E da próxima vez, quem sabe a versão em português para a galera aqui do tabnews? Pode pedir para a IA te ajudar!
Excelente artigo, parabéns! (Estava também estudando sobre o assunto mas o seu artigo é mais palatar, permitindo eu absorver o conceito e ir atrás de material mais denso).