服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - PHP教程 - PHP类中Static方法效率测试代码

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

2019-11-11 12:56php教程网 PHP教程

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

类的定义如下: 

复制代码代码如下:


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下用rmdir实现删除目录的三种方法小结

    PHP下用rmdir实现删除目录的三种方法小结

    PHP本身有一个rmdir()函数可以用来删除目录,不过要求必须是空目录,本文列举了三种方法。1、递规法;2、系统调用法;3、循环法 。 ...

    php教程网2252019-10-29
  • PHP教程Yii2 中实现单点登录的方法

    Yii2 中实现单点登录的方法

    这篇文章主要介绍了Yii2 中实现单点登录的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...

    琯琯2362019-10-18
  • PHP教程PHP回调函数及匿名函数概念与用法详解

    PHP回调函数及匿名函数概念与用法详解

    这篇文章主要介绍了PHP回调函数及匿名函数概念与用法,结合实例形式详细分析了PHP回调函数及匿名函数的概念、功能、使用方法及相关操作注意事项,需要...

    lvfk1682019-10-17
  • PHP教程Laravel框架队列原理与用法分析

    Laravel框架队列原理与用法分析

    这篇文章主要介绍了Laravel框架队列原理与用法,结合实例形式分析了Laravel框架队列的原理、使用方法及相关操作注意事项,需要的朋友可以参考下...

    e4210834581472019-09-09
  • PHP教程php使用array_chunk函数将一个数组分割成多个数组

    php使用array_chunk函数将一个数组分割成多个数组

    这篇文章主要介绍了php使用array_chunk函数将一个数组分割成多个数组,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    mrr2802019-07-26
  • PHP教程PHP的curl函数的用法总结

    PHP的curl函数的用法总结

    在本篇文章中小编给大家分享了关于PHP的curl函数的用法总结以及相关知识点内容,需要的读者们学习下。...

    laozhang3682019-06-15
  • PHP教程PHP基于SPL实现的迭代器模式示例

    PHP基于SPL实现的迭代器模式示例

    这篇文章主要介绍了PHP基于SPL实现的迭代器模式,简单描述了迭代器模式的概念、原理并结合实例形式分析了php使用SPL实现迭代器模式的相关操作技巧与注意...

    LSGOZJ4922019-10-11
  • PHP教程PHP5中使用PDO连接数据库的方法

    PHP5中使用PDO连接数据库的方法

    PDO(PHP Data Object) 是PHP 5 中加入的东西,是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接和处理,什么...

    php教程网4202019-11-05