`
Tzhennan
  • 浏览: 59375 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

PHP7 做的相关优化

 
阅读更多

1、zval使用栈内存

在Zend引擎和扩展中,经常要创建一个PHP的变量,底层就是一个zval指针。之前的版本都是通过MAKE_STD_ZVAL动态的从堆上分配一个zval内存。而PHP7可以直接使用栈内存。PHP代码中创建的变量也进行了优化,PHP7直接在栈内存上预分配zval。这样节约了大量内存分配和内存管理的操作。

 

PHP5

zval *val; MAKE_STD_ZVAL(val);

 

PHP7

zval val;

 

2、zend_string存储hash值,array查询不再需要重复计算hash

PHP7为字符串单独创建了新类型叫做zend_string,除了char *指针和长度之外,增加了一个hash字段,用于保存字符串的hash值。PHP中array是核心数据结构,PHP程序中往往都有大量的$array[$key]操作,虽然hashtable查找的时间复杂度是O(1),但$key要转为hash值是要经过计算的。不仅仅是array操作,实际上PHP底层对于类属性、类方法、函数,访问时都要先通过hashtable查找到对应的指针,再执行对应的操作。PHP7之前Zend引擎会有大量的CPU时间用于计算hash值。

 

实际上PHP程序运行起来之后,大部分情况下$key的值都是不变的。PHP7干脆将这个hash值保存起来,下次直接使用,这样就节省了大量的hash计算操作

 

3、hashtable桶内直接存数据

PHP5的hashtable每个元素都是一个 Bucket *,而PHP7直接存Bucket,减少了内存申请次数,提升了Cache命中率和内存访问速度。

 

4、zend_parse_parameters改为宏实现

PHP的C扩展函数与PHP中的变量进行参数输入时,要使用zend_parse_parameters()函数,这个函数根据一个字符串参数找到对应PHP的zval指针,然后进行赋值。 这个函数实际上有一定的性能消耗。PHP7直接使用宏替换了zend_parse_parameters函数,C扩展中不再需要使用zend_parse_parameters进行逐个参数的查找,宏展开后自动会实现参数赋值。仅此一项就提升了5%的性能。

 

5、新增加4种OPCODE

很多PHP程序中会大量使用call_user_function, is_int/string/array,  strlen , defined 函数。PHP5 都是以扩展函数的方式提供,PHP7中这4类函数改成ZendVM的OPCODE指令,执行更快。

 

6、其他更多优化

除了上面5个主要优化点之外,PHP7还有其他更多的细节性能优化。如基础类型int、float、bool等改为直接进行值拷贝,排序算法改进,PCRE with JIT,execute_data和opline使用全局寄存器等等。PHP7对性能的优化会继续进行下去。

分享到:
评论

相关推荐

    php试题及相关优化

    这份"php试题及相关优化"的资料包正为此目的而准备,旨在帮助开发者提升PHP技能,并优化他们的代码执行效率。 首先,我们来探讨PHP试题中的核心知识点: 1. **变量与数据类型**:PHP支持多种数据类型,如字符串、...

    搜索引擎优化高级编程PHP版

    9. **SEO工具与库**:介绍一些PHP相关的SEO工具和库,帮助开发者更高效地实施优化工作。 10. **实战案例**:通过实际项目案例,展示如何将理论知识应用于PHP开发实践中,以解决具体问题。 总之,《搜索引擎优化...

    亲测thinkphp3.1.3完美支持php7 thinkphp3.1.3--for php7.zip

    标题中的“thinkphp3.1.3完美支持php7”意味着这个压缩包是针对PHP7环境优化过的ThinkPHP 3.1.3框架版本。ThinkPHP是中国常用的开源PHP框架之一,以其简洁、高效的代码风格和丰富的功能而受到开发者的欢迎。PHP7则是...

    php开发优化文档

    ### PHP开发优化知识点详解 #### 一、PHP代码优化 ...以上是基于提供的标题、描述、标签和部分内容总结出的PHP开发优化的相关知识点。通过对这些优化点的应用,可以显著提高PHP应用的性能和响应速度。

    ecshop同时支持php5、php7改动文件

    在标签中提到了"ecshop php7",这进一步确认了这个压缩包的内容与ECSHOP的PHP7兼容性有关。开发者可能已经解决了在PHP7下运行ECSHOP时可能出现的不兼容问题,如错误、警告或者性能下降等。 由于压缩包子文件的文件...

    php sql 优化

    根据给定的信息,我们可以从多个角度来探讨与PHP和SQL优化相关的知识点,包括数据库优化、版本控制工具的选择、PHP的一些高级用法等。 ### 1. MySQL 数据库优化 #### (1) 选择合适的字段类型 为了提高MySQL的性能...

    PHP7.x 8.0 memcache dll php_memcache.dll

    标题 "PHP7.x 8.0 memcache dll php_memcache.dll" 涉及到的是在PHP 7.x和8.0版本中使用memcache扩展的相关内容,特别是关于`php_memcache.dll`这个动态链接库文件。memcache是广泛应用于Web开发中的一个内存对象...

    php7新特性

    PHP7现在原生支持TLS(Thread Local Storage),这意味着在多线程环境下,PHP可以更有效地管理线程相关的数据。 6. Consistent Foreach Behaviors(统一的foreach行为) 在PHP7中,foreach循环的行为得到了规范,...

    php7 memcache扩展

    相较于之前的PHP5,PHP7带来了显著的性能提升和内存使用优化。主要改进包括引入了全新的Zend Engine 3,语法错误处理更加友好,以及对类型声明、返回类型提示和null合并运算符等新特性的支持。PHP7还删除了一些废弃...

    PHP执行速率优化技巧小结

    当常量存在时,直接使用常量而非相关函数,如`PHP_OS`, `PHP_VERSION`, `PHP_SAPI`等。 14. **Win32检测优化**: 使用`DIRECTORY_SEPARATOR`检查是否为Windows环境,既简洁又通用。 15. **利用 REQUEST_TIME**:...

    基于PHP的博客网址导航优化版php版源码.zip

    7. **SEO优化**:了解关键词优化、元标签设置、页面速度优化等技巧,以提高博客导航在搜索引擎中的可见性。 8. **安全实践**:防止SQL注入、XSS攻击等网络安全问题,确保代码的安全性。 9. **错误处理与日志记录**...

    windows php7.4 php-apcu.dll

    标题中的"windows php7.4 php-apcu.dll"和描述中的"windows php7 apcu php_apcu.dll"都提到了Windows环境下PHP 7.4版本与APCu扩展的关联,特别是`php_apcu.dll`这个动态链接库文件。APCu(Alternative PHP Cache for...

    搜索引擎优化高级编程(PHP版)

    3. **元标签优化**:通过PHP动态生成标题(title)、关键词(keywords)和描述(description)等元标签,确保每个页面的元信息都是独一无二且相关的,有助于提升搜索引擎对页面内容的理解。 4. **内容管理**:PHP...

    php7 benchmark 工具

    本文将深入探讨PHP7 Benchmark工具及其相关知识点。 首先,理解Benchmark的概念至关重要。Benchmark,即基准测试,是通过执行一系列预设的任务来衡量程序性能的一种方法。在PHP7中,基准测试可以帮助我们了解代码...

    PHP实例开发源码-博客网址导航源码优化版 php版.zip

    7. **SEO优化**:优化版源码可能考虑了搜索引擎优化(SEO),比如元标签的使用,友好的URL结构等。 8. **代码优化**:此版本特别强调优化,可能包括减少数据库查询、缓存策略、代码重构等方面,以提升网站性能。 9...

    基于PHP的贴图库云图床 php版 优化版.zip

    【标题】中的“基于PHP的贴图库云图床 php版 优化版”指的是一个使用PHP编程语言开发的图片托管服务系统,它被优化以提高性能和用户体验。这个系统允许用户上传图片,并将它们存储在云端,以便在各种在线平台上方便...

    搜索引擎优化高级编程(PHP版)高清300dpi版.part2

    搜索引擎优化高级编程(PHP版)]高清300dpi版,分两部分打包上传,此为第二部分。 搜索引擎优化在传统意义上是营销团队的工作。但在本书里,作者将从另外一个角度看待搜索引擎优化,让编程人员也参与到搜索引擎优化的...

    Phalcon7 (高性能 PHP 7框架) v1.2.3.zip

    Phalcon7 是继承自 Phalcon 1.3.x,开源、全功能栈、使用 C 编写、针对 PHP 7 优化的高性能框架。 开发者不需要学习和使用 C 语言的功能, 因为所有的功能都以 PHP 类的方式暴露出来,可以直接使用。 Phalcon 也是松...

    基于PHP的CSS精简优化工具.zip

    为了使用这个工具,用户需要查看压缩包内的其他文件或相关文档,以了解如何运行和配置这个PHP CSS优化工具。 在实际应用中,CSS精简优化工具可能包括以下功能: 1. **删除空格和换行**:将CSS代码中的多余空格和...

    Ecshop如何做SEO优化

    7. **图片优化**: - 为所有图片添加`alt`属性,包含相关关键词,有助于搜索引擎理解图片内容。 - 缩减图片大小和格式,提高页面加载速度,这对SEO也有积极影响。 8. **内容质量**: - 提供高质量、原创的商品...

Global site tag (gtag.js) - Google Analytics