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中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
Mar 29 PHP
php连接mssql数据库的几种方法
Feb 21 PHP
php 批量生成html,txt文件的实现代码
Jun 26 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
Feb 18 PHP
php环境无法上传文件的解决方法
Apr 30 PHP
php文件上传的两种实现方法
Apr 04 PHP
AES加解密在php接口请求过程中的应用示例
Oct 26 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
Nov 25 PHP
php mysql操作mysql_connect连接数据库实例详解
Dec 26 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
Jan 12 PHP
PHP中常见的密码处理方式和建议总结
Oct 14 PHP
基于php伪静态的实现方法解析
Jul 31 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 数据结构 算法描述 冒泡排序 bubble sort
2011/07/10 PHP
利用php实现禁用IE和火狐的缓存问题
2012/12/03 PHP
CI(CodeIgniter)框架介绍
2014/06/09 PHP
配置php.ini实现PHP文件上传功能
2014/11/27 PHP
php提交post数组参数实例分析
2015/12/17 PHP
php生成图片缩略图功能示例
2017/02/22 PHP
php实现留言板功能(代码详解)
2017/03/28 PHP
PHP调用接口用post方法传送json数据的实例
2018/05/31 PHP
laravel 错误处理,接口错误返回json代码
2019/10/25 PHP
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
Bootstrap零基础入门教程(三)
2016/07/18 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
2016/09/05 Javascript
ES6模块化的import和export用法方法总结
2017/08/08 Javascript
vue2.0 资源文件assets和static的区别详解
2018/04/08 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
ES6入门教程之变量的解构赋值详解
2019/04/13 Javascript
vue+element表格导出为Excel文件
2019/09/26 Javascript
js HTML DOM EventListener功能与用法实例分析
2020/04/27 Javascript
粗略分析Python中的内存泄漏
2015/04/23 Python
使用Python更换外网IP的方法
2018/07/09 Python
Flask实现图片的上传、下载及展示示例代码
2018/08/03 Python
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
详解python tkinter教程-事件绑定
2019/03/28 Python
django 连接数据库出现1045错误的解决方式
2020/05/14 Python
通过Python实现一个简单的html页面
2020/05/16 Python
Python基于内置函数type创建新类型
2020/10/22 Python
python中的插入排序的简单用法
2021/01/19 Python
医学生个人求职信范文
2014/02/07 职场文书
董事长助理岗位职责
2014/02/18 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
活动总结报告范文
2014/05/04 职场文书
走进敬老院活动总结
2014/07/10 职场文书
文员岗位职责范本
2015/04/16 职场文书
优秀班干部主要事迹材料
2015/11/04 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python
动画电影《擅长捉弄人的高木同学》6月10日上映!
2022/03/20 日漫