ホームページ > バックエンド開発 > PHPチュートリアル > PHP の静的遅延バインディングと通常の静的効率の簡単な比較

PHP の静的遅延バインディングと通常の静的効率の簡単な比較

WBOY
リリース: 2016-06-13 12:00:56
オリジナル
939 人が閲覧しました

PHP の静的遅延バインディングと通常の静的効率の簡単な比較

これは、遅延バインディングと遅延なしのバインディングの効率を比較する単純な実験です

遅延バインディングでは、主に static キーワードが使用されます。オリジナルの自己ですが、機能は非常に強力です


実験コード:

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 の 3 つがあり、いずれも静的なメンバー変数とメソッドです。このうち、

クラス A は静的遅延を使用し、

クラス B は静的遅延を使用します。非静的。

C クラスはクラス A を継承し、静的メンバー変数とメソッドの遅延バインディングを実装します。


環境は PHP5.4.27 で、テスト結果を直接アップロードします:


2 つのタイプがあります。

1. クラス A と B のみがある (つまり、クラス A を継承できるクラスがない) 場合、効率にほとんど違いはありません

2. クラス A をクラス C に継承した場合 その後、静的遅延バインディングを使用したクラス A のパフォーマンスはクラス B よりもわずかに低下します (クラス A がクラスを継承している限り、パフォーマンスは遅くなります)


ループ 10 万回、2.8 秒 ~ 3.2 秒の時間差は約 0.3 秒であり、無視できる程度です


追記:

その後、いくつかのテストメソッドが追加されました。

クラス C がクラス A を継承し、クラス A の静的メンバー変数の一部をオーバーロードする場合、オーバーロードを増やすほど高速になります。クラス B (遅延なし) と比較されますが、クラス A の速度はクラス B およびクラス C よりも遅くなります




関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート