下载后可任意编辑PHP 的性能测试全过程分享关于 PHP,很多人的直观感觉是 PHP 是一种灵活的脚本语言,库类丰富,使用简单,安全,非常适合 WEB 开发,但性能低下。PHP 的性能是否真的就如同大家的感觉一样的差呢?本文就是围绕这么一个话题来进行探讨的。从源码、应用场景、基准性能、对比分析等几个方面深化分析 PHP 之性能问题,并通过真实的数据来说话。 步骤/方法2.从原理分析 PHP 性能 从原理分析 PHP 的性能,主要从以下几个方面:内存管理、变量、函数、运行机制来进行分析。 2.1 内存管理 类似 Nginx 的内存管理方式,PHP 在内部也是基于内存池,并且引入内存池的生命周期概念。在内存池方面,PHP 对 PHP 脚本和扩展的所有内存相关操作都进行了托管。对大内存和小内存的管理采纳了不同的实现方式和优化,在内存分配和回收的生命周期内,PHP 采纳一次初始化申请+动态扩容+内存标识回收机制,并且在每次请求结束后直接对内存池进行重新 mask。 2.2 变量 总所周知,PHP 是一种弱变量类型的语言,所以在 PHP 内部,所有的 PHP 变量都对应成一种类型 Zval,其中具体定义如下: 在变量方面,PHP 做了大量的优化工作,比如说 Reference counting 和 copy on writer 机制。这样能够保证内存使用上的优化,并且减少内存拷贝次数。在数组方面,PHP 内部采纳高效的 hashtable 来实现。 2.3 函数 在 PHP 内部,所有的 PHP 函数都回转化成内部的一个函数指针。比如说扩展中函数ZEND_FUNCTION ( my_function );//类似 function my_function(){}void zif_my_function ( INTERNAL_FUNCTION_PARAMETERS );void zif_my_function(int ht,下载后可任意编辑zval * return_value,zval * this_ptr,int return_value_used,zend_executor_globals * executor_globals); 在内部展开后就会是一个函数 从这个角度来看,PHP 函数在内部也是对应一个函数指针。 2.4 运行机制 在话说 PHP 性能的时候,很多人都会说“C/C++是编译型,JAVA 是半编译型,PHP 是解释型”。也就是说 PHP 是先动态解析再代码运行的,所以从这个角度来看,PHP 性能必定很差。 的确,从 PHP 脚本运行来输出,的确是一个动态解析再代码运行的过程。具体来说,PHP 脚本的运行机制如下图所示: PHP 的运行阶段也分成三个阶段:Parse。语法分析阶段。Compile。编译产出 opcode 中间码。Execute。运行,...