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读写文件的方法(生成HTML)
Nov 27 PHP
PR值查询 | PageRank 查询
Dec 20 PHP
dedecms中常见问题修改方法总结
Mar 21 PHP
php中json_encode中文编码问题分析
Sep 13 PHP
一个漂亮的php验证码类(分享)
Aug 06 PHP
PHP小技巧之函数重载
Jun 02 PHP
主流PHP框架的优缺点对比分析
Dec 25 PHP
php实现处理输入转义字符的代码
Nov 08 PHP
php发送短信验证码完成注册功能
Nov 24 PHP
PHP通过GD库实现验证码功能示例
Feb 23 PHP
PHP析构函数destruct与垃圾回收机制的讲解
Mar 22 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
Apr 02 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 的几个配置文件函数
2006/12/21 PHP
Memcache 在PHP中的使用技巧
2010/02/08 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
浅谈ThinkPHP中initialize和construct的区别
2017/04/01 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
2018/01/29 PHP
JQuery对checkbox操作 (循环获取)
2011/05/20 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
javascript正则匹配汉字、数字、字母、下划线
2014/04/10 Javascript
面向切面编程(AOP)的理解
2015/05/01 Javascript
轻松掌握JavaScript单例模式
2016/08/25 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
JQuery实现动态操作表格
2017/01/11 Javascript
canvas实现十二星座星空图
2017/02/14 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
react写一个select组件的实现代码
2019/04/03 Javascript
Vue动态加载图片在跨域时无法显示的问题及解决方法
2020/03/10 Javascript
[01:32]寻找你心中的那团火 DOTA2 TI9火焰传递活动今日开启
2019/05/16 DOTA
[05:11]TI9战队采访——VIRTUSPRO
2019/08/22 DOTA
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
Python利用Beautiful Soup模块创建对象详解
2017/03/27 Python
Python基于生成器迭代实现的八皇后问题示例
2018/05/23 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
2018/11/18 Python
Python调用shell命令常用方法(4种)
2020/05/11 Python
Flask处理Web表单的实现方法
2021/01/31 Python
阿玛瑞酒店中文官方网站:Amari.com
2018/02/13 全球购物
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
审计工作个人的自我评价
2013/12/25 职场文书
党建目标管理责任书
2014/07/25 职场文书
我的中国梦演讲稿1000字
2014/08/19 职场文书
基层党员对照检查材料
2014/09/24 职场文书
领导班子整改措施
2014/10/24 职场文书
宣传委员竞选稿
2015/11/19 职场文书
《风筝》教学反思
2016/02/23 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书
为什么中国式养孩子很累?
2019/08/07 职场文书