基础数据结构:
(注意dict是字典,dict->type是相关函数指针, dict->type->keyDup是执行该方法)
具体调用链路:
渐进式rehash:
新增/删除时:
查询时:
都会进行rehash
所以当dict数据量大的时候,在扩容时,可能会影响set/get的rt
GOOD:https://blog.csdn.net/belalds/article/details/93713491
size 空间大小,used 已使用
总体过程:
步骤1:判断是否要扩容:
步骤2:渐进式扩容前准备:
准备方法:
步骤3:在增删改查时进行部分rehash工作:
每次增量式的数量:
数量为 1* 10:
这里指的数量(或者说bucket),是指数组元素的个数,每个元素即为一个链表。
可见,当字典数据量大时,假设1000万数据,1:1的情况,那么需要100万次操作才能rehash万。
系统帮助是每次 100 * 10 = 100个数组元素:
问题: