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


可以这么简单的理解:

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

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

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

tags: PHP,PHP7