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中文字母数字验证码实现代码
Apr 25 PHP
php学习之运算符相关概念
Jun 09 PHP
php shell超强免杀、减少体积工具实现代码
Oct 16 PHP
PHP中使用cURL实现Get和Post请求的方法
Mar 13 PHP
PHP中array_merge和array相加的区别分析
Jun 17 PHP
关于js与php互相传值的介绍
Jun 25 PHP
php过滤XSS攻击的函数
Nov 12 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
Jul 25 PHP
微信公众平台实现获取用户OpenID的方法
Apr 15 PHP
使用PHP实现微信摇一摇周边红包
Jan 04 PHP
php解决和避免form表单重复提交的几种方法
Aug 31 PHP
PHP屏蔽关键字实现方法
Nov 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
php5中date()得出的时间为什么不是当前时间的解决方法
2008/06/30 PHP
自己在做项目过程中学到的PHP知识收集
2012/08/20 PHP
ThinkPHP的Widget扩展实例
2014/06/19 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
2016/02/15 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
2016/03/22 PHP
PHP使用mongoclient简单操作mongodb数据库示例
2019/02/08 PHP
php5对象复制、clone、浅复制与深复制实例详解
2019/08/14 PHP
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
获取body标签的两种方法
2011/10/13 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
2014/10/16 Javascript
JavaScript Ajax实现异步通信
2016/12/14 Javascript
jQuery中map函数的两种方式
2017/04/07 jQuery
bootstrap multiselect 多选功能实现方法
2017/06/05 Javascript
jquery根据name取得select选中的值实例(超简单)
2018/01/25 jQuery
微信小程序三级联动选择器使用方法
2020/05/19 Javascript
vue中引用swiper轮播插件的教程详解
2018/08/16 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
Nodejs中的require函数的具体使用方法
2019/04/02 NodeJs
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
2019/06/17 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
Python贪吃蛇游戏编写代码
2020/10/26 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
使用Python来开发微信功能
2018/06/13 Python
使用python爬虫获取黄金价格的核心代码
2018/06/13 Python
Python语法分析之字符串格式化
2019/06/13 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
2019/09/11 Python
Python queue队列原理与应用案例分析
2019/09/27 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
Java和Javasciprt的区别
2012/09/02 面试题
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
经理职责范文
2013/11/08 职场文书
实习生个人的自我评价
2013/12/08 职场文书
基督教追悼会答谢词
2015/09/29 职场文书
2016年推广普通话宣传周活动总结
2016/04/06 职场文书
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL