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 相关文章推荐
透析PHP的配置文件php.ini
Oct 09 PHP
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 PHP
解析crontab php自动运行的方法
Jun 24 PHP
php中如何判断一个网页请求是ajax请求还是普通请求
Aug 10 PHP
phpQuery占用内存过多的处理方法
Nov 13 PHP
php中的观察者模式简单实例
Jan 20 PHP
微信开发之php表单微信中自动提交两次问题解决办法
Jan 08 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
Feb 23 PHP
利用php的ob缓存机制实现页面静态化方法
Jul 09 PHP
PHP中“=&gt;
Mar 01 PHP
laravel框架之数据库查出来的对象实现转化为数组
Oct 23 PHP
PHP7 其他修改
Mar 09 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
淘宝ip地址查询类分享(利用淘宝ip库)
2014/01/07 PHP
PHP检测字符串是否为UTF8编码的常用方法
2014/11/21 PHP
php字符串函数学习之substr()
2015/03/27 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
jquery 常用操作方法
2010/01/28 Javascript
离开页面时检测表单元素是否被修改,提示保存的js代码
2010/08/25 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
不使用浏览器运行javascript代码的方法
2013/07/24 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
2015/10/23 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
JS不完全国际化&amp;本地化手册 之 理论篇
2016/09/27 Javascript
基于 webpack2 实现的多入口项目脚手架详解
2017/06/26 Javascript
vue 挂载路由到头部导航的方法
2017/11/13 Javascript
Angular实现可删除并计算总金额的购物车功能示例
2017/12/26 Javascript
JS关于刷新页面的相关总结
2018/05/09 Javascript
使用 JavaScript 创建并下载文件(模拟点击)
2019/10/25 Javascript
jquery实现聊天机器人
2020/02/08 jQuery
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
Python简单进程锁代码实例
2015/04/27 Python
python中的lambda表达式用法详解
2016/06/22 Python
浅谈python函数之作用域(python3.5)
2017/10/27 Python
解决python3捕获cx_oracle抛出的异常错误问题
2018/10/18 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
Python 解析简单的XML数据
2020/07/24 Python
next在python中返回迭代器的实例方法
2020/12/15 Python
重大事项社会稳定风险评估方案
2014/06/15 职场文书
2014年人事科工作总结
2014/11/19 职场文书
2014年学校财务工作总结
2014/12/06 职场文书
从事会计工作年限证明
2015/06/23 职场文书
教师个人工作总结范文2015
2015/10/14 职场文书
react合成事件与原生事件的相关理解
2021/05/13 Javascript
Java新手教程之ArrayList的基本使用
2021/06/20 Java/Android