我的用例是通过网络传输一组成员(整数),所以我们采用增量编码,在接收端我们解码并将整个列表作为映射,map[string]struct{} 复杂度为 O(1)用于会员检查。
我面临的问题是,对于 200 万个整数,成员的实际大小仅为 15MB,但堆中映射的大小为 100+MB。似乎 Go 的实际地图实现不适合大型地图。由于它是一个客户端 SDK,我不想对可用内存产生太大影响,并且可能有多个这样的组需要在内存中保存很长时间——大约 1 周。
为此,Go 中是否有更好的替代 DS?
type void struct{}
func ToMap(v []int64) map[string]void {
out := map[string]void{}
for _, i := range v {
out[strconv.Itoa(int(i))] = void{}
}
return out
}
神不在的星期二
相关分类