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与javascript对多项选择的处理
Oct 09 PHP
php初学者写及时补给skype用户充话费的小程序
Nov 02 PHP
PHP中Date()时间日期函数的使用方法小结
Apr 20 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
Mar 01 PHP
解析php中static,const与define的使用区别
Jun 18 PHP
php修改NetBeans默认字体的大小
Jul 02 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
Jun 23 PHP
PHP用函数嵌入网站访问量计数器
Oct 27 PHP
PHP学习记录之数组函数
Jun 01 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
Oct 17 PHP
java解析json方法总结
May 16 PHP
laravel框架创建授权策略实例分析
Nov 22 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
DIY实用性框形天线
2021/03/02 无线电
php实现根据url自动生成缩略图的方法
2014/09/23 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
php、java、android、ios通用的3des方法(推荐)
2016/09/09 PHP
Django 中 cookie的使用
2017/08/17 PHP
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
通过js动态操作table(新增,删除相关列信息)
2012/05/23 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
2014/01/03 Javascript
js post提交调用方法
2014/02/12 Javascript
JavaScript通过this变量快速找出用户选中radio按钮的方法
2015/03/23 Javascript
jquery插件NProgress.js制作网页加载进度条
2015/06/05 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
js验证手机号、密码、短信验证码代码工具类
2020/06/24 Javascript
javascript流程控制语句集合
2017/09/18 Javascript
常用的9个JavaScript图表库详解
2017/12/19 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
2018/10/18 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
Python3字符串学习教程
2015/08/20 Python
5种Python单例模式的实现方式
2016/01/14 Python
python urllib urlopen()对象方法/代理的补充说明
2017/06/29 Python
Python中实例化class的执行顺序示例详解
2018/10/14 Python
python super函数使用方法详解
2020/02/14 Python
python tqdm实现进度条的示例代码
2020/11/10 Python
使用CSS3制作响应式导航菜单的方法
2015/07/12 HTML / CSS
匡威帆布鞋美国官网:Converse美国
2016/08/22 全球购物
Linux如何压缩可执行文件
2013/10/21 面试题
商务考察邀请函范文
2014/01/21 职场文书
旷课检讨书3000字
2014/02/04 职场文书
电子工程求职信
2014/07/17 职场文书
幼儿园法制宣传日活动总结
2014/11/01 职场文书
CSS3 制作的彩虹按钮样式
2021/04/11 HTML / CSS
golang fmt格式“占位符”的实例用法详解
2021/07/04 Golang
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL
golang连接MySQl使用sqlx库
2022/04/14 Golang