Python的dict的优化思路
老版本:
--+-------------------------------+| 哈希值(hash) 键(key) 值(value)--+-------------------------------+0 | hash0 key0 value0--+-------------------------------+1 | hash1 key1 value1--+-------------------------------+2 | hash2 key2 value2--+-------------------------------+. | ...__+_______________________________+将hash的索引哈希值和k-v存储在一起,虽然很好很快,但是由于哈希表为了保证不冲突,其内存需求要不存储的内容多很多,很不划算
思路,在为了保证性能而设计的区域,例如上述的哈希表中,只存储最重要的部分,再将重要部分与其余信息关联
新版本:
indices(这是Hash的部分)
0 -> - (右侧是地址,内存大小比k-v小,为了节省内存)1 -> -2 -> 13 -> -4 -> -5 -> 06 -> -7 -> 2
entries(数据存在一起)0 -> [name, mike]1 -> [dob, 1999-01-01]2 -> [gender, male]注意Hash数据结构的key一定要是可哈希对象,比如,在元组和列表中,列表可变不能哈希,所以如果强行写列表为key会报错TypeError: unhashable type: ‘list’
操作系统页表(类比)
在之前考研学习操作系统的时候,很多设计都有这种思想在里面,做大题的时候,很多访存、访问文件系统都需要一步一步找寻,精贵的地方只存储重要的信息、找寻详情的关联信息,比如说页表。

评论