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

开发技术 作者: 2024-08-04 02:15:01
因为有好几个项目等着做,又不是很急,再加上目前成型的那些框架多多少少用着总是有点不太如意,所以决定先自己写一个框架,然后再做项目。既然写框架,自然要经常做一些执行效率上的测试,今天做了一个static效率的测试。

类的定义如下:
<div class="codetitle"><a style="CURSOR: pointer" data="27228" class="copybut" id="copybut27228" onclick="doCopy('code27228')"> 代码如下:

<div class="codebody" id="code27228">
class test
{
public static function a(){}
public function b(){}
}
$obj = new test;

比较以下几种情况
test::a();
$obj->a();
$obj->b();
测试代码:
<div class="codetitle"><a style="CURSOR: pointer" data="18942" class="copybut" id="copybut18942" onclick="doCopy('code18942')"> 代码如下:
<div class="codebody" id="code18942">
$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是自定义的计算平均数的一个函数:
<div class="codetitle"><a style="CURSOR: pointer" data="96916" class="copybut" id="copybut96916" onclick="doCopy('code96916')"> 代码如下:
<div class="codebody" id="code96916">
function avg($arr)
{
$result = 0;
foreach ($arr as $val)
{
$result += $val;
}
$result /= count($arr);
return $result;
}

程序输出结果:
<div class="codetitle"><a style="CURSOR: pointer" data="36437" class="copybut" id="copybut36437" onclick="doCopy('code36437')"> 代码如下:
<div class="codebody" id="code36437">
PHP 5.2.14
view sourceprint?1 0.76490628848091
2 1.0699484376399
view sourceprint?1 PHP 5.3
view sourceprint?1 0.56919482299058
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懒得改服务器配置了,结果应该一样。

原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_56049.html
PHP Static

相关新闻

Linux下DedeCMS详细安全设置教程
dedecms 上传目录路径
织梦58织梦模板加固版教程详解
加固版织梦CMS整站源码通用安装教程
织梦安装入门视频教程(织梦58莹莹主讲)
修改dede专题管理功能 自定义节点容器模板
织梦(Dedecms)文档关键词维护,文章页自动添加关键词内链锚文本
dedecms把文章批量设为未审核的办法
使用DEDE织梦计划任务功能定时更新首页

本站采用系统自动发货方式,付款后即出现下载入口,如有疑问请咨询在线客服!

售后时间:早10点 - 晚11:30点

咨询售后客服

推荐模板

推荐精华

热门标签