PHP静态延迟绑定和普通静态效率的对比


Posted in PHP onOctober 20, 2017

PHP静态延迟绑定和普通静态效率的对比

只是一个简单的小实验,对比了下 延迟绑定 和 非延迟的效率

延迟绑定主要就是使用 static 关键字来替代原来的 self ,但功能非常强大了

实验代码:

class A { 
  protected static $cc1 = array('a1', 'b', 'c', 'd'); 
  protected static $cc2 = array('a2', 'b', 'c', 'd'); 
  protected static $cc3 = array('a3', 'b', 'c', 'd'); 
  protected static $cc4 = array('a4', 'b', 'c', 'd'); 
  protected static $cc5 = array('a5', 'b', 'c', 'd'); 
 
  public static function n1() { 
    return static::$cc1; 
  } 
  public static function n2() { 
    return static::$cc2; 
  } 
  public static function n3() { 
    return static::$cc3; 
  } 
  public static function n4() { 
    return static::$cc4; 
  } 
  public static function n5() { 
    return static::$cc5; 
  } 
} 
 
class C extends A { 
 
} 
 
class B { 
  protected static $cc1 = array('a1', 'b', 'c', 'd'); 
  protected static $cc2 = array('a2', 'b', 'c', 'd'); 
  protected static $cc3 = array('a3', 'b', 'c', 'd'); 
  protected static $cc4 = array('a4', 'b', 'c', 'd'); 
  protected static $cc5 = array('a5', 'b', 'c', 'd'); 
 
  public static function n1() { 
    return self::$cc1; 
  } 
  public static function n2() { 
    return self::$cc2; 
  } 
  public static function n3() { 
    return self::$cc3; 
  } 
  public static function n4() { 
    return self::$cc4; 
  } 
  public static function n5() { 
    return self::$cc5; 
  } 
}

上面总共 A 、B 、C 三个类,里面全是静态成员变量和方法,其中

A 类是使用了静态延迟,
B 类是非延迟,
C 类是继承A类实现了静态成员变量和方法的延迟绑定。

过程也不多说了,环境是 PHP5.4.27 直接上测试结果:

有两种情况,

1. 当只有 A、B类(也就是不让任何类继承A类)时,效率上几乎没有差别的

2. 当A类被C类继承了之后,使用静态延迟绑定的A类性能将会比 B类稍差一些(只要A类有了继承的类就会变慢)

循环十万次,耗时在 2.8s ~ 3.2s 之间 时间差距在 0.3 秒左右,应该还是可以忽略不计了吧

补充个:后来加了些测试方法,如果 C 类继承 A 类后,重载了部分 A 类中的静态成员变量,重载的越多则速度和 B 类(非延迟)就越接近,但 A 类的速度仍然会比 B 类 和 C 类慢

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

PHP 相关文章推荐
php 中include()与require()的对比
Oct 09 PHP
谷歌音乐搜索栏的提示功能php修正代码
May 09 PHP
解析php中die(),exit(),return的区别
Jun 20 PHP
PHP实现今天是星期几的几种写法
Sep 26 PHP
php计算两个日期相差天数的方法
Mar 14 PHP
php实现转换ubb代码的方法
Jun 18 PHP
PHP生成各种常见验证码和Ajax验证过程
Jan 10 PHP
浅析Yii2缓存的使用
May 10 PHP
Smarty高级应用之缓存操作技巧分析
May 14 PHP
Yii统计不同类型邮箱数量的方法
Oct 18 PHP
PHP使用ActiveMQ实例
Feb 05 PHP
Laravel框架中集成MongoDB和使用详解
Oct 17 PHP
php+ajax实现仿百度查询下拉内容功能示例
Oct 20 #PHP
详解cookie验证的php应用的一种SSO解决办法
Oct 20 #PHP
thinkPHP5项目中实现QQ第三方登录功能
Oct 20 #PHP
PHP简单实现二维数组赋值与遍历功能示例
Oct 19 #PHP
phpStudy2016 配置多个域名期间遇到的问题小结
Oct 19 #PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
Oct 19 #PHP
PHP自定义函数实现数组比较功能示例
Oct 19 #PHP
You might like
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
PHP程序员常见的40个陋习,你中了几个?
2014/11/20 PHP
php封装的smartyBC类完整实例
2016/10/19 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
让whoops帮我们告别ThinkPHP6的异常页面
2020/03/02 PHP
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
jquery DIV撑大让滚动条滚到最底部代码
2013/06/06 Javascript
了解Javascript的模块化开发
2015/03/02 Javascript
javascript实现带下拉子菜单的导航菜单效果
2015/05/14 Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
2016/01/04 Javascript
vue.js入门教程之基础语法小结
2016/09/01 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
jQuery实现淡入淡出的模态框
2017/02/09 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
2017/04/07 jQuery
React学习笔记之高阶组件应用
2018/06/02 Javascript
详解vue 兼容IE报错解决方案
2018/12/29 Javascript
Nodejs libuv运行原理详解
2019/08/21 NodeJs
vue中axios防止多次触发终止多次请求的示例代码(防抖)
2020/02/16 Javascript
Python二分法搜索算法实例分析
2015/05/11 Python
Python字符串格式化%s%d%f详解
2018/02/02 Python
使用matplotlib画散点图的方法
2018/05/25 Python
解决python多行注释引发缩进错误的问题
2019/08/23 Python
Python requests设置代理的方法步骤
2020/02/23 Python
Python多线程:主线程等待所有子线程结束代码
2020/04/25 Python
python logging模块的使用
2020/09/07 Python
如何在Canvas上的图形/图像绑定事件监听的实现
2020/09/16 HTML / CSS
Lookfantastic台湾:英国彩妆美发保养购物网
2018/03/26 全球购物
毕业生的自我鉴定该怎么写
2013/12/02 职场文书
高三毕业生自我鉴定
2013/12/20 职场文书
高中军训的心得体会
2014/09/01 职场文书
机关班子查摆问题及整改措施
2014/10/28 职场文书
2014年物业公司工作总结
2014/11/22 职场文书
2016年小学圣诞节活动总结
2016/03/31 职场文书
PHP中国际化的字符串排序和比较对象详解
2021/08/23 PHP
日元符号 ¥
2022/02/17 杂记