功能最高优化近50% Go Table从新成功 map经常使用Swiss
由于Go map是原生类型,且有了第一版成功,思索到Go1兼容性,新版基于swiss table的成功也要承袭已有的语义解放。同时,也要尽量防止swiss table自身的短板,Go团队在swiss table之上做了部分改良。比如为了将扩容带来的开支降到最低,Go引入了多table的设计,以允许渐进式扩容。也就是说一个map实践上是多个swiss table,而不是像上方说的一个map就是一个swiss table。每个table领有自己的load factor,可以独立扩容(table的扩容是一次性性扩容),这样就可以 将扩容的开支从所有数据变为部分大批数据,缩小扩容带来的影响 。