Heim > Backend-Entwicklung > PHP-Tutorial > PHP静态推延绑定和普通静态效率简单对比

PHP静态推延绑定和普通静态效率简单对比

WBOY
Freigeben: 2016-06-13 12:00:56
Original
927 Leute haben es durchsucht

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;	}}
Nach dem Login kopieren


上面总共 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 类慢




Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage