gpt4 book ai didi

go - Golang 中的池化映射

转载 作者:IT王子 更新时间:2023-10-29 01:38:47 26 4
gpt4 key购买 nike

我很好奇是否有人尝试过pool map 在围棋之前?我读过 pooling buffers以前,我想知道如果必须频繁地创建和销毁它们,或者如果有任何原因,先验地,它可能效率不高,那么通过类似的推理,池化 map 是否有意义。本地图返回到池中时,必须遍历它并删除所有元素,但似乎流行的建议是 create a new map instead of deleting the entries in a map which has already been allocated and reusing it这让我认为合并 map 可能没有那么有益。

最佳答案

如果您的映射通过删除或添加条目改变了(很多)大小,这将导致新的分配,并且将它们集中起来没有任何好处。

如果您的 map 的大小不会改变,而只有键的值会改变,那么池化将是一个成功的优化。

当您读取类似表格的结构时,例如 CSV 文件或数据库表,这会很有效。每行将包含完全相同的列,因此您无需清除任何条目。

当使用 go test -benchmem -bench . to

运行时,下面的基准测试显示没有分配
package mappool

import "testing"

const SIZE = 1000000

func BenchmarkMap(b *testing.B) {
m := make(map[int]int)

for i := 0; i < SIZE; i++ {
m[i] = i
}

b.ResetTimer()

for i := 0; i < b.N; i++ {
for i := 0; i < SIZE; i++ {
m[i] = m[i] + 1
}
}
}

关于go - Golang 中的池化映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42332883/

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