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
php日历[测试通过]
Mar 27 PHP
php 显示指定路径下的图片
Oct 29 PHP
让PHP更快的提供文件下载的代码
Jun 13 PHP
mac下Apache + MySql + PHP搭建网站开发环境
Jun 02 PHP
Thinkphp无限级分类代码
Nov 11 PHP
ThinkPHP中create()方法自动验证实例
Apr 26 PHP
详解Yaf框架PHPUnit集成测试方法
Dec 27 PHP
php微信公众号开发之音乐信息
Oct 20 PHP
Yii 使用intervention/image拓展实现图像处理功能
Jun 22 PHP
解决php写入数据库乱码的问题
Sep 17 PHP
PHP常用header头定义代码示例汇总
Aug 29 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
SONY SRF-M100的电路分析
2021/03/02 无线电
linux下安装php的memcached客户端
2014/08/03 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
PHP+jQuery实现双击修改table表格功能示例
2019/02/21 PHP
一个可以随意添加多个序列的tag函数
2009/07/21 Javascript
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
常用js字符串判断方法整理
2013/10/18 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
详解js的事件代理(委托)
2016/12/22 Javascript
ubuntu编译nodejs所需的软件并安装
2017/09/12 NodeJs
vue中组件的过渡动画及实现代码
2018/11/21 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
小程序跨页面交互的作用与方法详解
2020/01/07 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
使用Python标准库中的wave模块绘制乐谱的简单教程
2015/03/30 Python
举例讲解Python的Tornado框架实现数据可视化的教程
2015/05/02 Python
尝试用最短的Python代码来实现服务器和代理服务器
2016/06/23 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
2018/05/21 Python
python 公共方法汇总解析
2019/09/16 Python
python定义类的简单用法
2020/07/24 Python
HomeAway的巴西品牌:Alugue Temporada
2018/04/10 全球购物
匡威西班牙官网:Converse西班牙
2019/10/01 全球购物
J2EE系统只能是基于web
2015/09/08 面试题
幼儿园中秋节活动方案
2014/02/06 职场文书
考试诚信承诺书
2014/05/23 职场文书
新闻学专业求职信
2014/07/28 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
2014入党积极分子批评与自我批评思想报告
2014/10/06 职场文书
2014年党员发展工作总结
2014/12/02 职场文书
山楂树之恋观后感
2015/06/11 职场文书
SQL实现LeetCode(178.分数排行)
2021/08/04 MySQL
【js设计模式】SOLID五大设计原则
2022/03/24 Javascript
利用Python将list列表写入文件并读取的方法汇总
2022/03/25 Python