From: Timo Tijhof Date: Wed, 28 Sep 2016 21:01:04 +0000 (+0100) Subject: rdbms: Lazy-init DatabaseDomain::getId() X-Git-Tag: 1.31.0-rc.0~5284^2 X-Git-Url: https://git.cyclocoop.org/%27.WWW_URL.%27admin/?a=commitdiff_plain;h=782254cf1f92794bbdaa91f473db07d8120c3d67;p=lhc%2Fweb%2Fwiklou.git rdbms: Lazy-init DatabaseDomain::getId() Follows-up 847b91b. Noticed that in Xenon profiles, about 25% of Database::__construct time is spent in array_map, via DatabaseDomain::convertToString. * Database::__construct * DatabaseDomain::__construct/convertToString/array_map * DatabaseDomain::newUnspecified * DatabaseDomain::__construct/convertToString/array_map * DatabaseMysqlBase::open * mysqli::* Change-Id: Ib5ae7d1d03b27df504a7e5f552e36a0ca6fcf97e --- diff --git a/includes/libs/rdbms/database/DatabaseDomain.php b/includes/libs/rdbms/database/DatabaseDomain.php index 01b6b21f04..a3ae6f10a1 100644 --- a/includes/libs/rdbms/database/DatabaseDomain.php +++ b/includes/libs/rdbms/database/DatabaseDomain.php @@ -51,7 +51,6 @@ class DatabaseDomain { throw new InvalidArgumentException( "Prefix must be a string." ); } $this->prefix = $prefix; - $this->equivalentString = $this->convertToString(); } /** @@ -105,7 +104,7 @@ class DatabaseDomain { ); } - return ( $this->equivalentString === $other ); + return ( $this->getId() === $other ); } /** @@ -133,6 +132,10 @@ class DatabaseDomain { * @return string */ public function getId() { + if ( $this->equivalentString === null ) { + $this->equivalentString = $this->convertToString(); + } + return $this->equivalentString; }