你在做一些练习时我遇到过这个问题...... 假设你有一张容量为100,000的地图 哪个值在最短的时间内填充整个地图效率最高?
我自己运行了一些基准测试,尝试了我能想到的大多数类型,最终的列表是:
Benchmark_Struct-8 200 6010422 ns/op (struct{}{})
Benchmark_Byte-8 200 6167230 ns/op (byte = 0)
Benchmark_Int-8 200 6112927 ns/op (int8 = 0)
Benchmark_Bool-8 200 6117155 ns/op (bool = false)
示例功能:
func Struct() {
m := make(map[int]struct{}, 100000)
for i := 0; i < 100000; i++ {
m[i] = struct{}{}
}
}
正如您所看到的那样(大部分时间)是最快的类型struct{}{}
- 空结构。
- 感谢您的时间:)
答案 0 :(得分:4)
理论上,struct{}{}
应该是最有效的,因为它不需要记忆。在实践中,a)结果可能因Go版本,操作系统和系统架构而异; b)我无法想到最大化空值的执行时效率的任何情况。