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 相关文章推荐
与数据库连接
Oct 09 PHP
PHPCMS的使用小结
Sep 20 PHP
php中通过虚代理实现延迟加载的实现代码
Jun 10 PHP
php微信支付之APP支付方法
Mar 04 PHP
PHP贪婪算法解决0-1背包问题实例分析
Mar 23 PHP
PHP中的命名空间详细介绍
Jul 02 PHP
Zend Framework动作助手Redirector用法实例详解
Mar 05 PHP
Yii编程开发常见调用技巧集锦
Jul 15 PHP
php与c 实现按行读取文件实例代码
Jan 03 PHP
PHP编程中的Session阻塞问题与解决方法分析
Aug 07 PHP
PHP二维关联数组的遍历方式(实例讲解)
Oct 18 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 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
《魔兽争霸3:重制版》翻车了?你想要的我们都没有
2019/11/07 魔兽争霸
php中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
php堆排序实现原理与应用方法
2015/01/03 PHP
Zend Framework实现多文件上传功能实例
2016/03/21 PHP
php 无限分类 树形数据格式化代码
2016/10/11 PHP
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
javascript offsetX与layerX区别
2010/03/12 Javascript
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
2012/02/03 Javascript
JavaScript中的运算符种类及其规则介绍
2013/09/26 Javascript
Jquery对象和Dom对象的区别分析
2014/11/20 Javascript
利用jQuery实现打字机字幕效果实例代码
2016/09/02 Javascript
使用jquery给指定的table动态添加一行、删除一行
2016/10/13 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
2016/12/20 Javascript
jQuery实现多张图片上传预览(不经过后端处理)
2017/04/29 jQuery
JavaScript中常见的八个陷阱总结
2017/06/28 Javascript
Vue实现回到顶部和底部动画效果
2019/07/31 Javascript
策略模式实现 Vue 动态表单验证的方法
2019/09/16 Javascript
vue 虚拟DOM的原理
2020/10/03 Javascript
python中input()与raw_input()的区别分析
2016/02/27 Python
Python的装饰器用法学习笔记
2016/06/24 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
2017/12/14 Python
python提取具有某种特定字符串的行数据方法
2018/12/11 Python
python实现大量图片重命名
2020/03/23 Python
python实现七段数码管和倒计时效果
2019/11/23 Python
Python模拟FTP文件服务器的操作方法
2020/02/18 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
实例教程 HTML5 Canvas 超炫酷烟花绽放动画实现代码
2014/11/05 HTML / CSS
英国在线定制百叶窗网站:Swift Direct Blinds
2020/02/25 全球购物
高分子材料个人求职信范文
2013/09/25 职场文书
客服文员岗位职责
2013/11/29 职场文书
双拥工作宣传标语
2014/06/26 职场文书
年度安全生产目标责任书
2014/07/23 职场文书
导游词300字
2015/02/13 职场文书
学校捐书倡议书
2015/04/27 职场文书
2015年机关党建工作总结
2015/05/22 职场文书
Java网络编程之UDP实现原理解析
2021/09/04 Java/Android