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 相关文章推荐
在Zeus Web Server中安装PHP语言支持
Oct 09 PHP
BBS(php & mysql)完整版(三)
Oct 09 PHP
用PHP和ACCESS写聊天室(三)
Oct 09 PHP
php 将excel导入mysql
Nov 09 PHP
memcached 和 mysql 主从环境下php开发代码详解
May 16 PHP
Zend Studio去除编辑器的语法警告设置方法
Oct 24 PHP
PHP以指定字段为索引返回数据库所取的数据数组
Jun 30 PHP
php 地区分类排序算法
Jul 01 PHP
yii分页组件用法实例分析
Dec 28 PHP
PHP7匿名类用法分析
Sep 26 PHP
PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
Feb 10 PHP
PHP实现微信公众号验证Token的示例代码
Dec 16 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生成HTML静态页面实例代码
2008/08/31 PHP
PHP定时自动生成静态HTML的实现代码
2010/06/20 PHP
php设计模式 Singleton(单例模式)
2011/06/26 PHP
PHP-redis中文文档介绍
2013/02/07 PHP
CI框架中zip类应用示例
2014/06/17 PHP
phpmyadmin出现Cannot start session without errors问题解决方法
2014/08/14 PHP
PHP输出日历表代码实例
2015/03/27 PHP
laravel5实现微信第三方登录功能
2018/12/06 PHP
jquery(hide方法)隐藏指定元素实例
2013/11/11 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
基于javascript实现判断移动终端浏览器版本信息
2014/12/09 Javascript
AngularJS语法详解(续)
2015/01/23 Javascript
Bootstrap对话框使用实例讲解
2016/09/24 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
2020/06/29 Javascript
深入理解React高阶组件
2017/09/28 Javascript
vue axios 表单提交上传图片的实例
2018/03/16 Javascript
vue 对象添加或删除成员时无法实时更新的解决方法
2019/05/01 Javascript
Vue可自定义tab组件用法实例
2019/10/24 Javascript
JS实现无限轮播无倒退效果
2020/09/21 Javascript
JavaScript 中的六种循环方法
2021/01/06 Javascript
Python读取键盘输入的2种方法
2015/06/16 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
python 调用HBase的简单实例
2016/12/18 Python
Python实现输出某区间范围内全部素数的方法
2018/05/02 Python
实例讲解Python爬取网页数据
2018/07/08 Python
python 多线程重启方法
2019/02/18 Python
浅谈Django2.0 加xadmin踩的坑
2019/11/15 Python
Numpy将二维数组添加到空数组的实现
2019/12/05 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
2020/02/14 Python
Python标准库json模块和pickle模块使用详解
2020/03/10 Python
Under Armour安德玛英国官网:美国高端运动科技品牌
2018/09/17 全球购物
Linux内核产生并发的原因
2012/07/13 面试题
学校办公室主任职责
2013/12/27 职场文书
统计系教授推荐信
2014/02/28 职场文书