# 并发安全的字典(Map)类型
## 源码说明:
- 阅读顺序: 自底向上, 逐层阅读实现源码
- 注意互斥锁和原子操作的大量应用
```bash
# 自底向上4层结构:
- Pair
- Bucket
- Segment
- ConcurrentMap
- 整体结构:
- base.go // 全局常量
- errors.go // 自定义错误
- utils.go // 自定义 hash()算法实现
- ccmap.go // 核心入口
- segment.go // 先看此模块的实现
- pair.go
- bucket.go
- redistributor.go // 01.
- redistributor.go //
- bucket.go
```
## 性能测试报告:
### 插入对比:
```bash
======================================================
BenchmarkCmapPutAbsent:
======================================================
GOROOT=/usr/local/Cellar/go/1.8.3/libexec
10000000 189 ns/op
10000000 186 ns/op
10000000 183 ns/op
10000000 188 ns/op
10000000 184 ns/op
10000000 190 ns/op
10000000 192 ns/op
10000000 191 ns/op
10000000 185 ns/op
10000000 195 ns/op
10000000 190 ns/op
10000000 189 ns/op
10000000 186 ns/op
10000000 189 ns/op
10000000 186 ns/op
10000000 189 ns/op
10000000 186 ns/op
10000000 186 ns/op
10000000 201 ns/op
10000000 190 ns/op
PASS
Process finished with exit code 0
======================================================
BenchmarkCmapPutPresent:
======================================================
GOROOT=/usr/local/Cellar/go/1.8.3/libexec
5000000 228 ns/op
5000000 238 ns/op
10000000 247 ns/op
5000000 229 ns/op
10000000 224 ns/op
10000000 240 ns/op
10000000 255 ns/op
10000000 238 ns/op
10000000 235 ns/op
10000000 255 ns/op
10000000 245 ns/op
10000000 239 ns/op
10000000 232 ns/op
10000000 236 ns/op
10000000 235 ns/op
5000000 241 ns/op
10000000 242 ns/op
10000000 246 ns/op
10000000 250 ns/op
5000000 251 ns/op
PASS
Process finished with exit code 0
======================================================
BenchmarkMapPut
======================================================
GOROOT=/usr/local/Cellar/go/1.8.3/libexec
50000000 22.4 ns/op
100000000 23.1 ns/op
100000000 23.2 ns/op
100000000 23.8 ns/op
50000000 24.7 ns/op
50000000 25.5 ns/op
50000000 26.6 ns/op
50000000 27.7 ns/op
100000000 23.9 ns/op
50000000 25.9 ns/op
PASS
Process finished with exit code 0
======================================================
BenchmarkCmapGet
======================================================
GOROOT=/usr/local/Cellar/go/1.8.3/libexec
20000000 72.9 ns/op
20000000 61.1 ns/op
20000000 62.8 ns/op
20000000 63.1 ns/op
20000000 61.3 ns/op
20000000 68.6 ns/op
20000000 68.7 ns/op
20000000 61.5 ns/op
20000000 61.5 ns/op
20000000 60.7 ns/op
PASS
Process finished with exit code 0
======================================================
BenchmarkMapGet
======================================================
GOROOT=/usr/local/Cellar/go/1.8.3/libexec
100000000 10.6 ns/op
100000000 10.8 ns/op
200000000 9.57 ns/op
100000000 14.7 ns/op
100000000 11.5 ns/op
100000000 13.9 ns/op
100000000 10.9 ns/op
100000000 16.0 ns/op
100000000 10.8 ns/op
100000000 11.5 ns/op
PASS
Process finished with exit code 0
======================================================
BenchmarkCmapDelete
======================================================
GOROOT=/usr/local/Cellar/go/1.8.3/libexec
5000000 287 ns/op
30000000 61.7 ns/op
20000000 60.9 ns/op
20000000 115 ns/op
20000000 60.5 ns/op
20000000 115 ns/op
20000000 112 ns/op
10000000 117 ns/op
20000000 110 ns/op
30000000 60.9 ns/op
20000000 61.6 ns/op
20000000 109 ns/op
20000000 60.9 ns/op
30000000 60.7 ns/op
20000000 61.0 ns/op
20000000 109 ns/op
30000000 60.2 ns/op
30000000 61.3 ns/op
20000000 61.9 ns/op
20000000 64.3 ns/op
PASS
Process finished with exit code 0
======================================================
BenchmarkMapDelete
======================================================
GOROOT=/usr/local/Cellar/go/1.8.3/libexec
100000000 15.7 ns/op
100000000 15.4 ns/op
100000000 15.2 ns/op
100000000 15.2 ns/op
100000000 14.7 ns/op
100000000 21.4 ns/op
100000000 20.9 ns/op
100000000 14.5 ns/op
100000000 14.5 ns/op
100000000 14.6 ns/op
100000000 14.6 ns/op
100000000 14.5 ns/op
100000000 20.9 ns/op
100000000 14.5 ns/op
100000000 14.5 ns/op
100000000 14.5 ns/op
100000000 14.6 ns/op
100000000 14.5 ns/op
100000000 14.4 ns/op
100000000 14.5 ns/op
PASS
Process finished with exit code 0
```
没有合适的资源?快使用搜索试试~ 我知道了~
python, golang, js 等学习笔记归档. 包含代码, 文档, etc.zip
共134个文件
go:62个
py:45个
md:15个
需积分: 5 0 下载量 138 浏览量
2024-02-21
12:49:41
上传
评论
收藏 181KB ZIP 举报
温馨提示
python, golang, js 等学习笔记归档. 包含代码, 文档, etc
资源推荐
资源详情
资源评论
收起资源包目录
python, golang, js 等学习笔记归档. 包含代码, 文档, etc.zip (134个子文件)
test.docx 25KB
.gitignore 4KB
.gitkeeper 0B
.gitkeeper 0B
.gitkeeper 0B
.gitkeeper 0B
.gitkeeper 0B
bucket_test.go 11KB
ccmap_test.go 9KB
segment_test.go 8KB
tcp_socket.go 6KB
bucket.go 6KB
redistributor.go 5KB
signal.go 5KB
pair_test.go 5KB
npipe.go 4KB
segment.go 4KB
ccmap_benchmark_test.go 4KB
ccmap.go 3KB
datafile2_test.go 3KB
datafile3_test.go 3KB
datafile1_test.go 3KB
pair.go 3KB
datafile2.go 3KB
apipe.go 3KB
datafile3.go 3KB
datafile1.go 3KB
npipe-v4.go 3KB
npipe-v3.go 2KB
array.go 2KB
main.go 2KB
chanbase-v1.go 2KB
chan0cap.go 2KB
array_test.go 2KB
npipe-v2.go 2KB
chanbase-v3.go 2KB
chanbase-v2.go 2KB
errors.go 1KB
chinese.go 1KB
pool.go 1KB
english.go 1KB
chanclose.go 1KB
simple.go 1KB
chatbot.go 1KB
ticker.go 1KB
for.go 827B
rlock.go 822B
v2.go 814B
chanconv.go 793B
timeout2.go 779B
repeatedyunlock.go 744B
random.go 689B
v1.go 678B
copiedvalue.go 672B
once.go 668B
timeout1.go 621B
eval.go 573B
utils.go 547B
pkg_init.go 532B
repeatedlock.go 531B
base.go 482B
hello.go 418B
redeclare.go 412B
v4.go 357B
v3.go 302B
v5.go 302B
base.go 297B
v2.go 157B
v1.go 60B
calc.html 888B
LICENSE 1KB
readme.md 5KB
readme.md 1KB
README.md 1KB
readme.md 718B
readme.md 674B
README.md 544B
reference.md 470B
readme.md 403B
readme.md 391B
readme.md 188B
readme.md 153B
readme.md 104B
readme.md 74B
readme.md 65B
readme.md 39B
ex06b_queue_profile.py 5KB
thread_pool.py 4KB
ex05_event.py 2KB
ex06_queue.py 2KB
test_yield.py 2KB
spider.py 2KB
ex03_callable_usage.py 2KB
spider2.py 2KB
02_urllib_agent.py 2KB
md2html.py 1KB
ex03_lock.py 1KB
rpc_server.py 1KB
ex04_condition.py 1KB
search_folder_path.py 1KB
共 134 条
- 1
- 2
资源评论
Kwan的解忧杂货铺
- 粉丝: 1w+
- 资源: 3625
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于matlab实现图像处理,本程序使用背景差分法对来往车辆进行检测和跟踪.rar
- 基于matlab实现视频监控中车型识别代码,自己写的,希望和大家多多交流.rar
- sdk.config
- 基于matlab实现配电网三相潮流计算方法,对几种常用的配电网潮流计算方法进行了对比分析.rar
- 基于matlab实现配电网潮流 经典33节点 前推回代法潮流计算 回代电流 前推电压 带注释.rar
- 基于matlab实现模拟退火遗传算法的车辆调度问题研究,用MATLAB语言加以实现.rar
- 基于matlab实现蒙特卡洛的的移动传感器节点定位算法仿真代码.rar
- 华中数控系统818用户说明书
- 基于matlab实现卡尔曼滤波器完成多传感器数据融合 对多个机器人的不同传感器数据进行融合估计足球精确位置.rar
- 基于matlab实现进行简单车辆识别-车辆检测.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功