PHP的性能探讨和测试

1.缘起

关于PHP,很多人的直观感觉是PHP是一种灵活的脚本语言,库类丰富,使用简单,安全,非常适合WEB开发,但性能低下。PHP的性能是 否真的就如同大家的感觉一样的差呢?本文就是围绕这么一个话题来进行探讨的。从源码、应用场景、基准性能、对比分析等几个方面深 入分析PHP之性能问题,并通过真实的数据来说话。

2.从原理分析PHP性能

从原理分析PHP的性能,主要从以下几个方面:内存管理、变量、函数、运行机制来进行分析。

2.1内存管理

类似Nginx的内存管理方式,PHP在内部也是基于内存池,并且引入内存池的生命周期概念。在内存池方面,PHP对PHP脚本和扩展的所有 内存相关操作都进行了托管。对大内存和小内存的管理采用了不同的实现方式和优化,具体可以参考以下文档: https://wiki.php.net/internals/zend_mm。在内存分配和回收的生命周期内,PHP采用一次初始化申请+动态扩容+内存标识回收机制,并 且在每次请求结束后直接对内存池进行重新mask。

2.2变量

总所周知,PHP是一种弱变量类型的语言,所以在PHP内部,所有的PHP变量都对应成一种类型Zval,其中具体定义如下:

性能测试工具">

图一PHP变量

在变量方面,PHP做了大量的优化工作,比如说Reference counting和copy on writer机制。这样能够保证内存使用上的优化,并且减 少内存拷贝次数(请参考http://blog.xiuwz.com/2011/11/09 /php-using-internal-zval/)。在数组方面,PHP内部采用高效的 hashtable来实现。

时间: 2024-10-31 02:24:10

PHP的性能探讨和测试的相关文章

新旧MacBook性能跑分测试对比

  此前关于2016年款MacBook的多项性能评测中,相比较前代提升8%-15%之间,但是在实际使用中这种性能提升又带来了多大的感官体验? 为此外媒AppleInsider在进行SSD写入速度.GeekBench 3处理器跑分.Cinebench的CPU和GPU渲染测试和Google Octane网页浏览性能等常规测试后在最新版的Lightroom中导出已经完成编辑的图片,结果显示新款MacBook时间要快14%. 随后外媒又运行了Final Cut跑分BruceX,测试新旧两款设备在视频编辑

三张图看遍Linux 性能监控、测试、优化工具

三张图看遍Linux 性能监控.测试.优化工具 Linux 平台上的性能工具有很多,眼花缭乱,长期的摸索和经验发现最好用的还是那些久经考验的.简单的小工具.系统性能专家 Brendan D. Gregg 在最近的 LinuxCon NA 2014 大会上更新了他那个有名的关于 Linux 性能方面的 talk (Linux Performance Tools) 和幻灯片. 和 Brendan 去年的 talk 比较,今年增加了测试和优化两部分.下面的三张图片分别总结了 Linux 各个子系统以及

提高短连接性能方法的测试

创建测试脚本 通过在三个会话中同时执行test_login.sh脚本,模拟当数据库多个短连接情况性能 [oracle@xifenfei tmp]$ more test_login.sh #!/bin/bash echo "start login database `date`*********" >>/tmp/test_1.log e=2000 for((i=1;i<=$e;i=i+1)) do /tmp/login_oracle.sh done echo "

网站前端的性能优化与测试——内容过期

最近在搞网站的界面UI改版,除了少数的几个页面外,全站基本统一了界面风格,在解决各种浏览器兼容问题的时候,不经意搜到一个FireFox的插件 YSlow for Firebug,他是开源的网站优化工具,用于测试网站的前端性能.在YSlow的评价性能等级上,有十三条规则:1. Make fewer HTTP requests,2. Use a CDN,3. Add an Expires header,4. Gzip components,5. Put CSS at the top,6. Put J

TSDB之KairosDB:Tag对性能的影响测试

在使用TSDB时,在进行数据建模与项目实施时,都需要考虑如何设置标签? 按常识标签的数量,对性能是有影响的,所以在如何平衡"用户统计需求"与"性能"之间,我们需要进行权衡. 那么,问题出现了: 命题1:是否可以不断增加标签? 结论:不可以!增加标签会牺牲性能 标签个数从3到6,写入性能下降20%,读出性能下降40%. 应谨慎选择标签,当新建一些有用的标签时,也应考虑去除一些无用的标签. 命题2:标签值的值域对KairosDB的性能有多大影响? 比如地理位置这样的标签

Linux 性能监控、测试、优化工具

Linux 平台上的性能工具有很多,眼花缭乱,长期的摸索和经验发现最好用的还是那些久经考验的.简单的小工具.系统性能专家 Brendan D. Gregg 在最近的 LinuxCon NA 2014 大会上更新了他那个有名的关于 Linux 性能方面的 talk (Linux Performance Tools) 和幻灯片. 和 Brendan 去年的 talk 比较,今年增加了测试和优化两部分.下面的三张图片分别总结了 Linux 各个子系统以及监控.测试.优化这些子系统所用到的工具. 监控

Windows开源Web服务器性能和压力测试工具

linux有很多开源工具用来测试服务器负载,而windows上非常少,几乎没有除了几个复杂的JMeter WET等 将两个好用的工具是Linux版本通过Cygwin移植过来,方便广大windows人员使用,经过初步测试效果一致,是命令行简单易用的测试软件 1 http_load 程序非常小,http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工 具,它可以以一个单一的进程运行,一般不会把客户机搞死.还可以测试HTTPS类的网站请求. 源码官方下载

通过Java测试几种压缩算法的性能(附测试代码下载)_java

本文将会对常用的几个压缩算法的性能作一下比较.结果表明,某些算法在极端苛刻的CPU限制下仍能正常工作. 文中进行比较的算有: JDK GZIP --这是一个压缩比高的慢速算法,压缩后的数据适合长期使用.JDK中的java.util.zip.GZIPInputStream / GZIPOutputStream便是这个算法的实现. JDK deflate --这是JDK中的又一个算法(zip文件用的就是这一算法).它与gzip的不同之处在于,你可以指定算法的压缩级别,这样你可以在压缩时间和输出文件大

性能测试计划VS测试实践

许多人说,面向过程的工作是成功的关键.虽然我非常赞成这个说法,但我总是纳闷为什么人们对于性能测试的7个要点并没有特别关注,而这7个要点能左右性能测试项目的成败. 当一个测试人员被分配到性能测试项目组,项目经理会让他/她做的第一件事就是着手准备测试计划.但在测试计划的准备阶段,测试经理及其属下在准备文档时通常会掉以轻心,文档的大部分内容要么是从以前的项目中复制过来的,要么是从网上找来的任意模板:对测试计划中提到的需求说明不予任何关注就直接转移到下一阶段了.不可否认的是:作为公司流程标准中的必须项,