PHP类中Static方法效率测试代码


Posted in PHP onOctober 17, 2010

类的定义如下:

class test 
{ 
public static function a(){} 
public function b(){} 
} 
$obj = new test;

比较以下几种情况
test::a();
$obj->a();
$obj->b();
测试代码:
$obj = new test; 
$test_times = 100; 
$times = 10000; 
$effi1 = array(); 
$effi2 = array(); while ($test_times-- > 0) 
{ 
$time1 = microtime(true); 
for($i=0; $i<$times; $i++) 
{ 
test::a(); 
} 
$time2 = microtime(true); 
for($i=0; $i<$times; $i++) 
{ 
$obj->a(); 
} 
$time3 = microtime(true); 
for($i=0; $i<$times; $i++) 
{ 
$obj->b(); 
} 
$time4 = microtime(true); 
$effi1[] = ($time3 - $time2) / ($time2 - $time1); 
$effi2[] = ($time4 - $time3) / ($time3 - $time2); 
} 
echo avg($effi1),"\n",avg($effi2);

最后的avg是自定义的计算平均数的一个函数:
function avg($arr) 
{ 
$result = 0; 
foreach ($arr as $val) 
{ 
$result += $val; 
} 
$result /= count($arr); 
return $result; 
}

程序输出结果:
PHP 5.2.14 
view sourceprint?1 0.76490628848091 
2 1.0699484376399 
view sourceprint?1 PHP 5.3 
view sourceprint?1 0.56919482299058<BR>1.1016495598611

重复执行N(N>10)次,都与这个结果相差不大,说明:
1、直接通过类名访问静态方法的效率是通过实例访问静态方法的76%,甚至用PHP5.3时只有56%
2、通过实例访问静态方法的效率是访问非静态成员方法效率的106,在5.3版本变成110%
3、假设PHP从5.2升级到5.3时通过类名访问静态方法的效率没有降低,那么通过实例访问函数的效率至少提高了35%。我没看过PHP源码,有研究过PHP源码的朋友希望能告诉我这个假设是否成立 (我想应该是成立的)
说明:以上测试基于windows 7和php.exe,5.2.14使用了apache2.2测试结果没有区别,考虑到php.exe和通过web访问所执行的PHP核心是一样的,所以5.3懒得改服务器配置了,结果应该一样。
PHP 相关文章推荐
PHP+FLASH实现上传文件进度条相关文件 下载
Jul 21 PHP
Discuz! Passport 通行证整合
Mar 27 PHP
PHP中extract()函数的妙用分析
Jul 11 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
Jan 23 PHP
php写的AES加密解密类分享
Jun 20 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
Oct 30 PHP
PHP 微信支付类 demo
Nov 30 PHP
laravel学习教程之关联模型
Jul 30 PHP
php实现微信扫码自动登陆与注册功能
Sep 22 PHP
简单谈谈PHP中的Reload操作
Dec 12 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
Mar 14 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 PHP
发款php蜘蛛统计插件只要有mysql就可用
Oct 12 #PHP
PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象
Oct 12 #PHP
php中去除所有js,html,css代码
Oct 12 #PHP
PHP入门学习笔记之一
Oct 12 #PHP
PHP 显示客户端IP与服务器IP的代码
Oct 12 #PHP
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
Oct 12 #PHP
使用PHP 5.0创建图形的巧妙方法
Oct 12 #PHP
You might like
从C/C++迁移到PHP——判断字符类型的函数
2006/10/09 PHP
PHP函数学习之PHP函数点评
2012/07/05 PHP
PHP基础陷阱题(变量赋值)
2012/09/12 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
php将日期格式转换成xx天前的格式
2015/04/16 PHP
php生成4位数字验证码的实现代码
2015/11/23 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
php 中序列化和json使用介绍
2013/07/08 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
jQuery网页右侧广告跟随滚动代码分享
2020/04/20 Javascript
DWR中各种java方法的调用
2016/05/04 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
2016/08/01 Javascript
微信小程序 页面之间传参实例详解
2017/01/13 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
浅谈struts1 &amp; jquery form 文件异步上传
2017/05/25 jQuery
jQuery常用选择器详解
2017/07/17 jQuery
Javascript中的作用域及块级作用域
2017/12/08 Javascript
如何使node也支持从url加载一个module详解
2018/06/05 Javascript
[03:10]2014DOTA2 TI马来劲旅Titan首战告捷目标只是8强
2014/07/10 DOTA
Python中的闭包详细介绍和实例
2014/11/21 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
django如何连接已存在数据的数据库
2018/08/14 Python
python实现从wind导入数据
2019/12/03 Python
关于多元线性回归分析——Python&amp;SPSS
2020/02/24 Python
浅析Django 接收所有文件,前端展示文件(包括视频,文件,图片)ajax请求
2020/03/09 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
2020/10/14 Python
Haglöfs瑞典官方网站:haglofs火柴棍,欧洲顶级户外品牌
2018/10/18 全球购物
贪睡宠物用品:Snoozer Pet Products
2020/02/04 全球购物
GOLFINO英国官网:高尔夫服装
2020/04/11 全球购物
军训生自我鉴定范文
2013/12/27 职场文书
工厂总经理岗位职责
2014/02/07 职场文书
化妆品促销方案
2014/02/24 职场文书
党的作风建设心得体会
2014/10/22 职场文书
python对文档中元素删除,替换操作
2022/04/02 Python
java开发双人五子棋游戏
2022/05/06 Java/Android