作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!
如果我定义了 map[key]value,当 key 是 int8, int16, int32, int64, string 等类型时:
是否存在一种可能:当 map 中的元素小于某个边界时,从 map 中查找一个元素,还不如从一个 []type 的数组中查找更快?
以下是我的测试结果。
(元素个数在 边界内,顺序查找快于 hash 查找)
Macos + arm64 + m2, golang 1.26.1
整数类型
数据类型 |
边界 |
|---|---|
| int8 | 30 |
| int16 | 35 |
| int32 | 28 |
| int64 | 23 |
字符串类型
key 长度 |
边界 |
|---|---|
| 8 | 6 |
| 16 | 5 |
| 32 | 6 |
| 64 | 6 |
| 128 | 8 |
| 256 | 8 |
| 512 | 9 |
| 1024 | 16 |
Linux + amd64 + Intel(R) Core(TM) Ultra 7 265KF(4.5GHz), golang 1.26.2
整数类型
数据类型 |
边界 |
|---|---|
| int8 | 47 |
| int16 | 56 |
| int32 | 31 |
| int64 | 29 |
字符串类型
key 长度 |
边界 |
|---|---|
| 8 | 4 |
| 16 | 3 |
| 32 | 3 |
| 64 | 4 |
| 128 | 8 |
| 256 | 8 |
| 512 | 11 |
| 1024 | 17 |
这能有啥用?
下一步我将优化程序中 key 少于某个边界的 map.