什么是packed array,什么是hash array,区别是什么?

来源:5-2 HashTable巧妙设计实战

Pursue丶昔年

2018-12-19 14:46

什么是packed array,什么是hash array,区别是什么?

写回答 关注

1回答

  • 陈雷
    2018-12-19 17:59:29

    可以这么简单的理解:

    1、对于key是数字的,就不用涉及到hash运算,此时使用的是packed array; 当然如果key的值较大,或者间隔较大,还是会退化成hash array。  packed array 能够节省索引部分占用的内存,是一个性能上的优化;

    2、对于key是非数字的,必须用hash算法进行计算出来它所在bucket的位置,那么索引数组是必不可少的,只能是hash array。

    这是底层的实现,对于我们写php代码,需要关注的点是对于业务中的大数组,有没有可能设计一些算法,让它满足packed array的性质,这样可以节省内存; 另外一方面就是要关注在大数组的情况下,可能会发声packed array向 hash array的转变,这个耗时还是较大的,需要尽量避免这种情况。  当然这两种情况都是针对“大”数组,小数组的情况下,其实差距没那么大。

    慕斯卡028...

    所以如果间隔不大一步步升上去就不会变成hash array是吗

    2021-06-11 11:01:15

    共 1 条回复 >

PHP7的基本变量

学习PHP7基本变量,掌握PHP7的新特性

10126 学习 · 24 问题

查看课程

相似问题