Room A
Intermediate
20 mins.
現在GoではMapの内部実装をSwissTableを使用したものに置き換えることでパフォーマンスを向上させる案が議論[1]されています。SwissTableはRust[2]やabseil(Googleが公開したC++のライブラリ)[3]で使用されている実装です。
本セッションでは、SwissTableの概要と利点の紹介に留まらず、Map内部実装を変更するという影響範囲が広い変更について、Go Teamがどのような考慮をしているかやどんな議論がされているかを紹介します。
このセッションを通じて、Goの内部実装が変更される可能性に伴う議論を紹介することで、この提案の議論からGoの開発においてGo Teamが考慮している点や姿勢について学んだことを共有できればと思っています。 加えて、SwissTableへの理解を深めることで、変更がGo本体に採用されなかった場合にも、アルゴリズムの特性がみなさんが作成しているサービスに適しているかどうか判断できるようになり、必要な場合にはSwissTableを独自実装したりサードパーティ実装を使用したりすることで、Mapを伴う処理の高速化が必要になった時の手助けができればと幸いです。
[1] https://github.com/golang/go/issues/54766 [2] https://github.com/rust-lang/hashbrown [3] https://abseil.io/