PHP4和PHP5性能测试和对比 测试代码与环境


Posted in PHP onAugust 17, 2007

作者:heiyeluren
博客:
http://blog.csdn.net/heiyeshuwu
时间:2007年8月6日
PHP 4到今年年底PHP Group将不再对其进行支持了,所以为了让大家更有信心的转移到PHP 5平台上,我特别做了这个测试,看看我们PHP 4.x 是否真的性能比我们的PHP 5.x要好捏,测试结果很明显,那就是PHP 5.x 比php 4.x不论是面向对象还是面向过程,都要比PHP 4.x 要快,所以大家完全有必要转移到PHP 5.x 平台上,去体验PHP 5.x 平台的各种功能和性能。

因为PHP 5 包括新的对象模型,更多新特点,更快的处理速度,特别是处理面向对象代码的速度,虽然在php 4中面向对象代码的速度比较一般,但是在PHP5.x中面向对象代码的速度都超过了面向过程的速度,所以不要对面向对象的性能持有怀疑,下面的测试结果将说明这一切。

【测试环境】

  • CPU: Intel Pentium4 2.66GHz
  • Memory: 1GB
  • Disk: 73GB/SCSI
  • OS: FreeBSD 4.11
  • Web: Apache 1.3.37
    测试工具:ab (也可以选用http_load)
    名词RPS: Requests per second (每秒的请求数量)

相关
测试工具:ab (也可以选用http_load)
名词RPS: Requests per second (每秒的请求数量)

【PHP 4.4.2 测试结果】

[ 函数 Function ]

<?php
function signin(){
echo “test”;
}
signin();
?>

测试结果:ab -n 10000 -c 50 的结果是1047.23/rps
[ 类 Class ]

不实例化类
<?php
class User{
function signin(){
echo “test”;
}
}
User::signin();
?>

测试结果:ab -n 10000 -c 50 的结果是 1034.98/rps
实例化类
<?php
class User{
function signin(){
echo “test”;
}
}
$user=new User();
$user->signin();
?>

测试结果:ab -n 10000 -c 50 的结果是 1006.14/rps
类的继承
<?php
class AUser{
function signin(){}
}
class User extends Auser{
function signin(){
echo “test”;
}
}
$user=new User();
$user->signin();
?>

测试结果:ab -n 10000 -c 50 的结果是 992.95/rps

【PHP 5.2.1测试结果】

[ 函数 Function ]

<?php
function signin(){
echo “test”;
}
signin();
?>

测试结果:ab -n 10000 -c 50 的结果是 1176.06/rps
[ 类 Class ]

不实例化类
<?php
class User{
public function signin(){
echo “test”;
}
}
User::signin();
?>

测试结果:ab -n 10000 -c 50 的结果是 1197.17/rps

实例化类
<?php
class User{
public function signin(){
echo “test”;
}
}
$user=new User();
$user->signin();
?>

测试结果:ab -n 10000 -c 50 的结果是 1187.93/rps
类的继承和抽象
<?php
abstract class AUser{
abstract function signin();
}
class User extends Auser{
public function signin(){
echo “test”;
}
}
$user=new User();
$user->signin();
?>

测试结果:ab -n 10000 -c 50 的结果是 1128.54/rps

【测试结果和分析】

[ 测试结果数据 ]

版本 函数测试 不实例化类 实例化类 类的继承
PHP 4.4.2 1047.23/rps 1034.98/rps 1006.14/rps 992.95/rps
PHP 5.2.1 1176.06/rps 1197.17/rps 1187.93/rps 1128.54/rps

[ 结果分析 ]

1. 总体来说,可以明显刚看到PHP5.2 的性能要比 PHP4.4略高一点,所以不要怀疑PHP5.2的性能会差,明显比 PHP4要快
2. PHP4.4中的类的解析性能明显要比函数的要慢,特别是当使用了继承以后,更是下降的厉害,所以在PHP4.4中更适宜使用面向过程和没有继承的类操作
3. PHP5.2中结果是类的执行速度比函数还要快,可以看出PHP5.2的引擎对面向对象处理花费了很大的功夫,同时他们不论是函数还是类,性能都不错
4. 通过这个测试,我们完全有理由在代码变更不大的情况下,把PHP4升级到PHP5,而且PHP5基本向下兼容PHP4的代码,除了一些特殊的代码。另外上面提到今年年底之后PHP Group将不再继续对PHP4进行维护了,所以早升级,早安心。

PS: 感谢同事健祥同学提供部分测试代码

PHP 相关文章推荐
六酷社区论坛HOME页清新格调免费版 下载
Mar 07 PHP
PHP配置文件中最常用四个ini函数
Mar 19 PHP
php读取文件内容的几种方法详解
Jun 26 PHP
php获得url参数中具有&amp;的值的方法
Mar 05 PHP
php中3种方法删除字符串中间的空格
Mar 10 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
Jun 26 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
Nov 18 PHP
php获取四位字母和数字的随机数的实现方法
Jan 09 PHP
PHP脚本自动识别验证码查询汽车违章
Dec 20 PHP
php实现微信扫码支付
Mar 26 PHP
thinkPHP框架实现的短信接口验证码功能示例
Jun 20 PHP
thinkPHP事务操作简单案例分析
Oct 17 PHP
在PHP里得到前天和昨天的日期的代码
Aug 16 #PHP
PHP与MySQL开发中页面出现乱码的一种解决方法
Jul 29 #PHP
真正的ZIP文件操作类(php)
Jul 21 #PHP
php 用sock技术发送邮件的函数
Jul 21 #PHP
php中ob(Output Buffer 输出缓冲)函数使用方法
Jul 21 #PHP
在普通HTTP上安全地传输密码
Jul 21 #PHP
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
Jul 21 #PHP
You might like
php添加文章时生成静态HTML文章的实现代码
2013/02/17 PHP
php实现webservice实例
2014/11/06 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
非常有用的40款jQuery 插件推荐(系列二)
2011/12/25 Javascript
获取当前点击按钮的id用this.id实现
2014/03/17 Javascript
jquery中val()方法是从最后一个选项往前读取的
2015/09/06 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
字符串反转_JavaScript
2016/04/28 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
Angular1.x自定义指令实例详解
2017/03/01 Javascript
vue实现局部刷新的实现示例
2019/04/16 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
VUE 单页面使用 echart 窗口变化时的用法
2020/07/30 Javascript
vue.js watch经常失效的场景与解决方案
2021/01/07 Vue.js
[43:47]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第一场 12.09
2020/12/11 DOTA
pytyon 带有重复的全排列
2013/08/13 Python
完美解决python遍历删除字典里值为空的元素报错问题
2016/09/11 Python
关于PyTorch源码解读之torchvision.models
2019/08/17 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
2020/01/09 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
HTML5中使用postMessage实现Ajax跨域请求的方法
2016/04/19 HTML / CSS
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
Canvas中设置width与height的问题浅析
2018/11/01 HTML / CSS
公司年终奖分配方案
2014/06/16 职场文书
公司委托书格式
2014/08/01 职场文书
教育系统干部作风整顿心得体会
2014/09/09 职场文书
乡镇党员干部群众路线对照检查材料思想汇报
2014/09/28 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
2021/05/18 Vue.js
springboot如何初始化执行sql语句
2021/06/22 Java/Android
python数字转对应中文的方法总结
2021/08/02 Python
MySQL常见优化方案汇总
2022/01/18 MySQL
 python中的元类metaclass详情
2022/05/30 Python
Win11远程连接不上怎么办?Win11远程桌面用不了的解决方法
2022/08/05 数码科技