Golony 是一个高性能的 Go 容器库,提供以下特性:
- O(1) 时间复杂度的插入操作
- O(1) 时间复杂度的删除操作
- O(1) 时间复杂度的元素引用
- 高效的元素遍历(跳过已删除元素)
- 引用失效检测
- 采用了类似 C++ 库 plf::colony (std::hive) 中的 low complexity jump-counting pattern 来实现高效遍历
- 使用 check pattern 机制来检测引用失效
- 通过跳表优化遍历性能,避免遍历已删除的元素位置
check由调用方提供,并且必须保证不会与仍可能被持有的旧Index重复。推荐使用单调递增的 generation/check 值。- group 索引使用
uint16存储,因此最多支持65536个 group(索引范围0..65535)。 - 当 group 数超过
uint16可表示范围时,后续Insert会 panic。
适用于需要频繁插入删除,同时要求保持元素引用稳定性的场景,例如:
- 游戏开发中的实体管理
- 大规模对象池
- 需要频繁更新的数据结构
- 插入/删除操作不会导致其他元素的内存移动
- 遍历时可以高效跳过已删除的元素
- 通过引用失效检测机制确保内存安全
MIT License