Maison > développement back-end > tutoriel php > Explication détaillée de la comparaison entre la liaison statique retardée et l'efficacité statique ordinaire en PHP

Explication détaillée de la comparaison entre la liaison statique retardée et l'efficacité statique ordinaire en PHP

黄舟
Libérer: 2023-03-16 18:02:02
original
1425 Les gens l'ont consulté

Comparaison de la liaison retardée statique PHP et de l'efficacité statique ordinaire

C'est juste une expérience simple pour comparer l'efficacité de la liaison retardée et non retardée

La liaison paresseuse utilise principalement le mot-clé static pour remplacer le self d'origine, mais la fonction est très puissante

Code expérimental :


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; 
  } 
}
Copier après la connexion

Il existe trois classes A, B et C ci-dessus, qui sont toutes des variables et méthodes membres statiques, parmi lesquelles

La classe A utilise un délai statique,
La classe B est sans délai,
La classe C hérite de la classe A et implémente la liaison retardée des variables et méthodes membres statiques.

Je ne dirai pas grand chose sur le processus. L'environnement est PHP5.4.27 Téléchargez directement les résultats du test :

Il y a deux situations,

1. . Lorsqu'il n'y a que les classes A et B (c'est-à-dire qu'aucune classe n'hérite de la classe A), il n'y a presque aucune différence d'efficacité

2 Lorsque la classe A est héritée par la classe C, les performances de la classe A en utilisant la liaison statique retardée Ce sera légèrement pire que la classe B (tant que la classe A a hérité des classes, elle sera plus lente)

Boucles 100 000 fois et la différence de temps entre 2,8 s ~ 3,2 s correspond à environ 0,3 seconde. Cela devrait toujours être négligeable

Remarque supplémentaire : Plus tard, j'ai ajouté quelques méthodes de test si la classe C hérite de la classe A et surcharge certaines des variables membres statiques de la classe. A, recharger Plus il y a de charges, plus la vitesse sera proche de la classe B (non retardée), mais la vitesse de la classe A sera toujours plus lente que celle de la classe B et de la classe C

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal