gpt4 book ai didi

dictionary - golang maps预留多少内存?

转载 作者:IT王子 更新时间:2023-10-29 01:22:21 24 4
gpt4 key购买 nike

给定一个 map 分配,其中初始 space未指定,例如:

foo := make(map[string]int)

documentation建议此处的内存分配取决于实现。那么(如何)我可以知道我的实现分配给这个映射的内存量是多少?

最佳答案

您可以使用 Go 测试工具来测量任意复杂数据结构的大小。这在这个答案中有详细说明:How to get variable memory size of variable in golang?

要测量由 make(map[string]int) 创建的 map 的大小,请使用以下基准函数:

var x map[string]int

func BenchmarkEmptyMap(b *testing.B) {
for i := 0; i < b.N; i++ {
x = make(map[string]int)
}
}

执行

go test -bench . -benchmem

结果是:

BenchmarkEmptyMap-4     20000000   110 ns/op      48 B/op    1 allocs/op

所以答案是在我的 64 位架构上:48 字节

如前所述,大小可能取决于架构。大小也可能取决于您可能传递给 make() 的初始容量,如您在此示例中所见:

func BenchmarkEmptyMapCap100(b *testing.B) {
for i := 0; i < b.N; i++ {
x = make(map[string]int, 100)
}
}

输出:

BenchmarkEmptyMapCap100-4   1000000    1783 ns/op   4176 B/op    3 allocs/op

初始容量为 100 的 map[string]int 类型的映射现在需要 4176 字节(在 64 位架构上)。

如果未明确指定,默认初始容量约为 7。

关于dictionary - golang maps预留多少内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46278003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com