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日期处理函数 整型日期格式
Jan 12 PHP
与文件上传有关的php配置参数总结
Jun 14 PHP
PHP中如何实现常用邮箱的基本判断
Jan 07 PHP
php获取文件夹路径内的图片以及分页显示示例
Mar 11 PHP
强制PHP命令行脚本单进程运行的方法
Apr 15 PHP
PHP获取数组最后一个值的2种方法
Jan 21 PHP
PHP中抽象类、接口的区别与选择分析
Mar 29 PHP
PHP实现的简单组词算法示例
Apr 10 PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
Apr 10 PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
Apr 17 PHP
浅谈laravel-admin的sortable和orderby使用问题
Oct 03 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 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正则表达式(regar expression)
2011/09/10 PHP
解析php入库和出库
2013/06/25 PHP
php模仿asp Application对象在线人数统计实现方法
2015/01/04 PHP
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
PHP抽奖算法程序代码分享
2015/10/08 PHP
零基础学JavaScript最新动画教程+iso光盘下载
2008/01/22 Javascript
javascript EXCEL 操作类代码
2009/07/30 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
Backbone.js的Hello World程序实例
2015/06/19 Javascript
JS操作XML实例总结(加载与解析XML文件、字符串)
2015/12/08 Javascript
nodejs爬虫遇到的乱码问题汇总
2017/04/07 NodeJs
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
VUE简单的定时器实时刷新的实现方法
2019/01/20 Javascript
浅析 Vue 3.0 的组装式 API(一)
2020/08/31 Javascript
Python算法应用实战之队列详解
2017/02/04 Python
Python 数据结构之旋转链表
2017/02/25 Python
Python从零开始创建区块链
2018/03/06 Python
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
Python OpenCV中的resize()函数的使用
2019/06/20 Python
python将字符串转换成json的方法小结
2019/07/09 Python
简单了解Java Netty Reactor三种线程模型
2020/04/26 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
2020/09/03 Python
通过实例解析python and和or使用方法
2020/11/14 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
德国领先的大尺码和超大尺码男装在线零售商:Bigtex
2019/06/22 全球购物
欧洲最大的高尔夫零售商:American Golf
2019/09/02 全球购物
日本最大的购物网站:日本乐天市场(Rakuten Ichiba)
2020/11/04 全球购物
大家检讨书5000字
2014/02/03 职场文书
销售人员工作自我评价
2014/09/21 职场文书
2015年工会工作总结
2015/03/30 职场文书
2016年机关单位节能宣传周活动总结
2016/04/05 职场文书
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
2021/04/13 HTML / CSS
nginx 添加http_stub_status_module模块
2022/05/25 Servers
javascript进阶篇深拷贝实现的四种方式
2022/07/07 Javascript