- 变量容器 zval 结构体定义改变,减少内存占用,减少引用计数相关操作。
- zend_string。字符串复制的时候,采用引用赋值,zend_string可以避免的内存拷贝。
- zend_array。数组的value默认为zval。
HashTable的大小从72下降到56字节,减少22%。
Buckets的大小从72下降到32字节,减少50%。
数组元素的Buckets的内存空间是一同分配的。
数组元素的key(Bucket.key)指向zend_string。
数组元素的value被嵌入到Bucket中。
降低CPU Cache Miss。 - 改进函数调用机制。
- 通过宏定义和内联函数(inline),让编译器提前完成部分工作
参考链接:
- http://www.csdn.net/article/2015-09-16/2825720
- PHP’s new hashtable implementation
- Internal value representation in PHP 7 – Part 2