1.移植使用
void *zmalloc(size_t size);
void *zcalloc(size_t size);
void zfree(void *ptr);
#define random() rand()
#define snprintf _snprintf_s
long long timeInMilliseconds(void) {
SYSTEMTIME st;
GetLocalTime(&st);
return (((long long)st.wSecond) * 1000) + (st.wMilliseconds);
//struct timeval tv;
//gettimeofday(&tv,NULL);
//return (((long long)tv.tv_sec) * 1000) + (tv.tv_usec / 1000);
}
2.特点
使用2^n为哈希数组长度,而不是通用的质数
使用链表来处理碰撞问题
将扩容分散到多个小步骤中,以实现渐进式rehash
渐进式rehash可以在空闲时运行指定时间
3.核心
如何实现渐进式rehash
其实一步到位也是可以得,不过渐进式rehash可以使得避免不可预料的延迟,将整体延迟分散到多个步骤中,类似于map 红黑书中的动态平衡。