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; } }
上記の3つのクラスA、B、Cがあり、これらはすべて静的メンバー変数とメソッドです。そのうち、クラスAは静的遅延を使用し、
Bクラスは遅延のない
プロセスの詳細については説明しません。環境は PHP5.4.27 です。テスト結果に直接進みましょう:
1.つまり、どのクラスもクラス A を継承することはできません)、効率にはほとんど違いはありません
2. クラス A がクラス C に継承される場合、静的遅延バインディングを使用したクラス A のパフォーマンスはクラスのパフォーマンスよりわずかに低下します。 B (クラス A がクラスを継承している限り、Slow に変更されます)
追加:
後で、クラス C の場合、クラス A を継承した後、クラス A の一部の静的メンバー変数がオーバーロードされると、速度はクラス B (遅延なし) に近づきます。クラス A は依然としてクラス B やクラス C よりも遅いです以上がPHPにおける静的遅延バインディングと通常の静的効率の比較の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。