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 相关文章推荐
php4的session功能评述(三)
Oct 09 PHP
PHP中几种常见的超时处理全面总结
Sep 11 PHP
控制PHP的输出:缓存并压缩动态页面
Jun 11 PHP
php 购物车完整实现代码
Jun 05 PHP
php实现两表合并成新表并且有序排列的方法
Dec 05 PHP
PHP中使用Memache作为进程锁的操作类分享
Mar 30 PHP
微信公众号开发之通过接口删除菜单
Feb 20 PHP
thinkPHP实现的联动菜单功能详解
May 05 PHP
Laravel实现autoload方法详解
May 07 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
Nov 20 PHP
PHP正则验证字符串是否为数字的两种方法并附常用正则
Feb 27 PHP
php7下的filesize函数
Sep 30 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
在线短消息收发的程序,不用数据库
2006/10/09 PHP
php可生成缩略图的文件上传类实例
2014/12/17 PHP
js 新浪的一个图片播放图片轮换效果代码
2008/07/15 Javascript
JS上传前预览图片实例
2013/03/25 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
2013/06/06 Javascript
IE浏览器中图片onload事件无效的解决方法
2014/04/29 Javascript
JS小游戏之宇宙战机源码详解
2014/09/25 Javascript
轻松创建nodejs服务器(3):代码模块化
2014/12/18 NodeJs
实现非常简单的js双向数据绑定
2015/11/06 Javascript
jquery中实现时间戳与日期相互转换
2016/04/12 Javascript
使用Ajax与服务器(JSON)通信实例
2016/11/04 Javascript
bootstrap fileinput 上传插件的基础使用
2017/02/17 Javascript
详解如何使用vue-cli脚手架搭建Vue.js项目
2017/05/19 Javascript
详解使用nvm安装node.js
2017/07/18 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
2017/08/16 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
分享ES6的7个实用技巧
2018/01/18 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
Element中Slider滑块的具体使用
2020/07/29 Javascript
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
收集的几个Python小技巧分享
2014/11/22 Python
Python实现把utf-8格式的文件转换成gbk格式的文件
2015/01/22 Python
Python 递归函数详解及实例
2016/12/27 Python
python编程培训 python培训靠谱吗
2018/01/17 Python
python3 读写文件换行符的方法
2018/04/09 Python
PyTorch上实现卷积神经网络CNN的方法
2018/04/28 Python
浅谈Python中重载isinstance继承关系的问题
2018/05/04 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
PyTorch: Softmax多分类实战操作
2020/07/07 Python
英国第一独立滑雪板商店:The Snowboard Asylum
2020/01/16 全球购物
防溺水主题班会教案
2015/08/12 职场文书
《吃水不忘挖井人》教学反思
2016/02/22 职场文书
社区结对共建协议书
2016/03/23 职场文书
写作技巧:怎样写好一份优秀工作总结?
2019/08/14 职场文书
centos8安装MongoDB的详细过程
2021/10/24 MongoDB
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js