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 相关文章推荐
Extended CHM PHP 语法手册之 DIY
Oct 09 PHP
php 进度条实现代码
Mar 10 PHP
基于session_unset与session_destroy的区别详解
Jun 03 PHP
PHP自定session保存路径及删除、注销与写入的方法
Nov 18 PHP
详解PHP错误日志的获取方法
Jul 20 PHP
基于PHP给大家讲解防刷票的一些技巧
Nov 18 PHP
浅谈PHP中其他类型转化为Bool类型
Mar 28 PHP
Adnroid 微信内置浏览器清除缓存
Jul 11 PHP
PHP脚本自动识别验证码查询汽车违章
Dec 20 PHP
PHP弱类型语言中类型判断操作实例详解
Aug 10 PHP
PHP的mysqli_sqlstate()函数讲解
Jan 23 PHP
php获取是星期几的的一些常用姿势
Dec 15 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中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
2011/05/04 PHP
PHP curl_setopt()函数实例代码与参数分析
2011/06/02 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
2013/06/02 PHP
php判断当前用户已在别处登录的方法
2015/01/06 PHP
php自定义分页类完整实例
2015/12/25 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
2016/04/15 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
Exitjs获取DataView中图片文件名
2009/11/26 Javascript
经典海量jQuery插件 大家可以收藏一下
2010/02/07 Javascript
JS正则表达式大全(整理详细且实用)
2013/11/14 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
JS获取网页属性包括宽、高等等
2014/04/03 Javascript
JavaScript分页功能的实现方法
2015/04/25 Javascript
JavaScript中使用Math.floor()方法对数字取整
2015/06/15 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
2016/01/04 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
2016/04/06 Javascript
javascript基础练习之翻转字符串与回文
2017/02/20 Javascript
Bootstrap 3 按钮标签实例代码
2017/02/21 Javascript
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
浅谈Vue响应式(数组变异方法)
2018/05/07 Javascript
nodejs前端模板引擎swig入门详解
2018/05/15 NodeJs
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
2018/11/12 Javascript
js实现动态时钟
2020/03/12 Javascript
[02:58]献给西雅图的情书_高清
2014/05/29 DOTA
python 获取et和excel的版本号
2009/04/09 Python
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
python xlsxwriter模块的使用
2020/12/24 Python
Zatchels官网:英国剑桥包品牌
2021/01/12 全球购物
EJB发布WEB服务一般步骤
2012/10/31 面试题
乔迁之喜主持词
2014/03/27 职场文书
2014年教师政治学习材料
2014/06/02 职场文书
2016年优秀团员事迹材料
2016/02/25 职场文书