PHP程序中Static方法效率的测试

php中文网
发布: 2016-06-01 14:24:24
原创
1431人浏览过

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

类的定义如下:

class test
{
    public static function a(){}
    public function b(){}
}
登录后复制

 

比较以下几种情况

  1. test::a();
  2. $obj->a();
  3. $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是自定义的计算平均数的一个函数:

立即学习PHP免费学习笔记(深入)”;

家电小商城网站源码1.0
家电小商城网站源码1.0

家电公司网站源码是一个以米拓为核心进行开发的家电商城网站模板,程序采用metinfo5.3.9 UTF8进行编码,软件包含完整栏目与数据。安装方法:解压上传到空间,访问域名进行安装,安装好后,到后台-安全与效率-数据备份还原,恢复好数据后到设置-基本信息和外观-电脑把网站名称什么的改为自己的即可。默认后台账号:admin 密码:132456注意:如本地测试中127.0.0.1无法正常使用,请换成l

家电小商城网站源码1.0 0
查看详情 家电小商城网站源码1.0
function avg($arr)
{
    $result = 0;
    foreach ($arr as $val)
    {
        $result += $val;
    }

    $result /= count($arr);
    return $result;
}
登录后复制

 

程序输出结果:

PHP 5.2.14
登录后复制

 
0.76490628848091
1.0699484376399
登录后复制

 
PHP 5.3
登录后复制

 
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速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号