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 相关文章推荐
解析thinkphp基本配置 convention.php
Jun 18 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
Nov 24 PHP
php类自动加载器实现方法
Jul 28 PHP
PHP直接修改表内容DataGrid功能实现代码
Sep 24 PHP
WordPress中设置Post Type自定义文章类型的实例教程
May 10 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
May 16 PHP
php smtp实现发送邮件功能
Jun 22 PHP
php实现保存周期为1天的购物车类
Jul 07 PHP
PHP7基于curl实现的上传图片功能
May 11 PHP
PHP生成腾讯云COS接口需要的请求签名
May 20 PHP
thinkPHP中U方法加密传递参数功能示例
May 29 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 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
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
2009/03/13 PHP
PHP 获取客户端真实IP地址多种方法小结
2010/05/15 PHP
PHP输出XML到页面的3种方法详解
2013/06/06 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
2016/04/02 PHP
Fleaphp常见函数功能与用法示例
2016/11/15 PHP
php通过pecl方式安装扩展的实例讲解
2018/02/02 PHP
mysqli扩展无法在PHP7下升级问题的解决
2019/09/10 PHP
javascript mouseover、mouseout停止事件冒泡的解决方案
2009/04/07 Javascript
显示js对象所有属性和方法的函数
2009/10/16 Javascript
写自已的js类库需要的核心代码
2012/07/16 Javascript
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
JQuery做的一个简单的点灯游戏分享
2014/07/16 Javascript
js图片模糊切换显示特效的方法
2015/02/17 Javascript
jQuery简单tab切换效果实现方法
2015/04/08 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
谈谈JavaScript中function多重理解
2015/08/28 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
js编写一个简单的产品放大效果代码
2016/06/27 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
2016/08/08 Javascript
自己封装的一个原生JS拖动方法(推荐)
2016/11/22 Javascript
JS实现touch 点击滑动轮播实例代码
2017/01/19 Javascript
BACKBONE.JS 简单入门范例
2017/10/17 Javascript
详解webpack 入门与解析
2018/04/09 Javascript
对angular 监控数据模型变化的事件方法$watch详解
2018/10/09 Javascript
mock.js模拟数据实现前后端分离
2019/07/24 Javascript
[03:28]2014DOTA2国际邀请赛 走近EG战队天才中单Arteezy
2014/07/12 DOTA
[02:10]探秘浦东源深体育馆 DOTA2 Supermajor不见不散
2018/05/17 DOTA
python 列表,数组和矩阵sum的用法及区别介绍
2018/06/28 Python
详解python metaclass(元类)
2020/08/13 Python
新西兰优惠网站:Treat Me
2019/07/04 全球购物
社区工作者思想汇报
2014/01/13 职场文书
学术会议邀请函范文
2014/01/22 职场文书
高三语文复习计划
2015/01/19 职场文书
董事长助理工作总结2015
2015/07/23 职场文书
jquery插件实现代码雨特效
2021/04/24 jQuery
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
2021/06/29 Python