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 提速工具eAccelerator 配置参数详解
May 16 PHP
在PHP中利用wsdl创建标准webservice的实现代码
Dec 07 PHP
php获取发送给用户的header信息的方法
Mar 16 PHP
详解PHP中的mb_detect_encoding函数使用方法
Aug 18 PHP
PHP+AJAX实现投票功能的方法
Sep 28 PHP
php魔术方法功能与用法实例分析
Oct 19 PHP
CentOS 上搭建 PHP7 开发测试环境
Feb 26 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
Jun 02 PHP
PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】
Jul 03 PHP
阿里云的WindowsServer2016上部署php+apache
Jul 17 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
May 31 PHP
微信推送功能实现方式图文详解
Jul 12 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 接口类与抽象类的实际作用
2009/11/26 PHP
php实现二进制和文本相互转换的方法
2015/04/18 PHP
joomla组件开发入门教程
2016/05/04 PHP
PHP机器学习库php-ml的简单测试和使用方法
2017/07/14 PHP
php工具型代码之印章抠图
2018/07/18 PHP
js导航菜单(自写)简单大方
2013/03/28 Javascript
JSON无限折叠菜单编写实例
2013/12/16 Javascript
JavaScript Array对象扩展indexOf()方法
2014/05/09 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
js实现当前输入框高亮显示的方法
2015/08/19 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
Vue数据驱动模拟实现2
2017/01/11 Javascript
详谈js模块化规范
2017/07/07 Javascript
详解在Vue中如何使用axios跨域访问数据
2017/07/07 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
2019/02/21 Javascript
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
Python遍历文件夹和读写文件的实现方法
2017/05/10 Python
Python之os操作方法(详解)
2017/06/15 Python
详解flask入门模板引擎
2018/07/18 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
Python实现桌面翻译工具【新手必学】
2020/02/12 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
英国汽车和货车租赁网站:Hertz英国
2016/09/02 全球购物
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
怎样声明子类
2013/07/02 面试题
SQL里面IN比较快还是EXISTS比较快
2012/07/19 面试题
高中军训感言400字
2014/02/24 职场文书
如何写贫困证明申请书
2014/10/29 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
MySQL Router的安装部署
2021/04/24 MySQL
Python中threading库实现线程锁与释放锁
2021/05/17 Python
Html5大屏数据可视化开发的实现
2021/06/11 HTML / CSS
CDPR谈《巫师》新作用虚幻5原因 称不会为Epic独占
2022/04/06 其他游戏