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 相关文章推荐
mysql 中InnoDB和MyISAM的区别分析小结
Apr 15 PHP
检测png图片是否完整的php代码
Sep 06 PHP
php连接函数implode与分割explode的深入解析
Jun 26 PHP
php的memcache类分享(memcache队列)
Mar 26 PHP
php.ini save_handler 修改不生效的解决办法
Jul 22 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
Jul 29 PHP
php中base_convert()进制数字转换函数实例
Nov 20 PHP
PHP+jquery+ajax实现即时聊天功能实例
Dec 23 PHP
php绘制圆形的方法
Jan 24 PHP
PHP实现伪静态方法汇总
Jan 13 PHP
Yii2前后台分离及migrate使用(七)
May 04 PHP
php str_replace替换指定次数的方法详解
May 05 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的array_multisort()使用方法介绍
2012/05/16 PHP
php实现单链表的实例代码
2013/03/22 PHP
php轻量级的性能分析工具xhprof的安装使用
2015/08/12 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
asp 取文本框名称代码
2008/12/02 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
2013/10/15 Javascript
动态标签 悬停效果 延迟加载示例代码
2013/11/21 Javascript
js检测输入内容全为空格的方法
2014/05/03 Javascript
一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
2014/06/26 Javascript
纯javascript判断查询日期是否为有效日期
2015/08/24 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
Vue-resource实现ajax请求和跨域请求示例
2017/02/23 Javascript
基于JS对象创建常用方式及原理分析
2017/06/28 Javascript
JS+Ajax实现百度智能搜索框
2017/08/04 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
2017/09/20 Javascript
python中对list去重的多种方法
2014/09/18 Python
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
微信跳一跳辅助python代码实现
2018/01/05 Python
TensorFlow 合并/连接数组的方法
2018/07/27 Python
用Python实现大文本文件切割的方法
2019/01/12 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
python opencv实现简易画图板
2020/08/27 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
Matlab使用Plot函数实现数据动态显示方法总结
2021/02/25 Python
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
师范学院毕业生求职信范文
2013/12/26 职场文书
大学生入党思想汇报
2014/01/01 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
小学少先队活动总结
2015/05/08 职场文书
南京大屠杀观后感
2015/06/02 职场文书
win11无法登录onedrive错误代码0x8004def7怎么办 ?
2022/04/05 数码科技