PHP类中Static方法效率测试代码
2023-06-13 09:14:24 时间
类的定义如下:
复制代码代码如下:
classtest
{
publicstaticfunctiona(){}
publicfunctionb(){}
}
$obj=newtest;
比较以下几种情况
test::a();
$obj->a();
$obj->b();
测试代码:
$obj=newtest;
$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);
}
echoavg($effi1),"\n",avg($effi2);
最后的avg是自定义的计算平均数的一个函数:
functionavg($arr)
{
$result=0;
foreach($arras$val)
{
$result+=$val;
}
$result/=count($arr);
return$result;
}
程序输出结果:
PHP5.2.14
viewsourceprint?10.76490628848091
21.0699484376399
viewsourceprint?1PHP5.3
viewsourceprint?10.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源码的朋友希望能告诉我这个假设是否成立(我想应该是成立的)
说明:以上测试基于windows7和php.exe,5.2.14使用了apache2.2测试结果没有区别,考虑到php.exe和通过web访问所执行的PHP核心是一样的,所以5.3懒得改服务器配置了,结果应该一样。
相关文章
- Linux平台上运行PHP脚本的快乐之旅(linux运行php)
- php curl返回false解决方法详解编程语言
- 命令在PHP中执行Linux命令的方法(php执行linux)
- PHP连接MSSQL库的方法(php链接mssql)
- 深入了解PHP Redis方法,提高开发效率(phpredis方法)
- 优化在Linux环境下优化PHP参数的方法(linuxphp参数)
- PHP检测MySQL性能的方法(php检测mysql)
- PHP从Linux中读取文件的方法(php读取linux文件)
- Linux下如何快速部署PHP环境(linux如何部署php)
- 快速学习PHP Redis的使用方法(php redis怎么用)
- PHP连接MSSQL:实现不同数据库的高效通信(php连接mssql端口)
- 用PHP访问本地MSSQL数据库的实现方法(php访问本地mssql)
- PHP与MSSQL结合,提高数据查询效率(php能连mssql)
- PHP连接MSSQL实现注册功能(php注册写入mssql)
- Linux下轻松执行PHP文件的方法(linux执行php文件)
- 菜鸟学习Redis提升PHP运行效率(菜鸟 redis php)
- PHP上传文件的方法(类)
- 优化php效率,提高php性能的一些方法
- php处理斐波那契数列非递归方法
- 提高PHP编程效率的方法
- PHP中source#N问题的解决方法
- php教程之魔术方法的使用示例(php魔术函数)
- PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
- PHP计算百度地图两个GPS坐标之间距离的方法
- PHP配置文件php.ini中打开错误报告的设置方法
- 图解找出PHP配置文件php.ini的路径的方法