Aude has uploaded a new change for review. https://gerrit.wikimedia.org/r/182455
Change subject: Cache reference and rank messages when formatting statements ...................................................................... Cache reference and rank messages when formatting statements At least in local profiling, calling wfMessage bazillion times to repeatedly get the same messages is expensive. With this change, for my large(ish) test item, time it takes to purge goes from 28 seconds to 21 seconds. (without xdebug, goes from 2.3 to 1.7 seconds). In production, due to differences in caching setup (although i also use cdb for localisation cache) etc., the performance impact might not as much but should still help some. Change-Id: Icfd6ca13149987976317675d3394490f2e958011 --- M repo/includes/View/ClaimHtmlGenerator.php 1 file changed, 47 insertions(+), 9 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/55/182455/2 diff --git a/repo/includes/View/ClaimHtmlGenerator.php b/repo/includes/View/ClaimHtmlGenerator.php index 4f21031..3596303 100644 --- a/repo/includes/View/ClaimHtmlGenerator.php +++ b/repo/includes/View/ClaimHtmlGenerator.php @@ -38,6 +38,16 @@ private $snakHtmlGenerator; /** + * @var string[] + */ + private $referenceHeadings = array(); + + /** + * @var string[] + */ + private $statementRankText = array(); + + /** * @param TemplateFactory $templateFactory * @param SnakHtmlGenerator $snakHtmlGenerator */ @@ -88,17 +98,11 @@ $rankHtml = $this->templateFactory->render( 'wb-rankselector', 'ui-state-disabled', 'wb-rankselector-' . $serializedRank, - wfMessage( 'wikibase-statementview-rank-' . $serializedRank )->text() + 'rank', + $this->getStatementRankText( $serializedRank ) ); - $referenceCount = count( $claim->getReferences() ); - - $referencesHeading = wfMessage( - 'wikibase-ui-pendingquantitycounter-nonpending', - wfMessage( - 'wikibase-statementview-referencesheading-pendingcountersubject' - )->numParams( $referenceCount )->text() - )->numParams( $referenceCount )->text(); + $referencesHeading = $this->getReferencesHeading( $claim ); $referencesHtml = $this->getHtmlForReferences( $claim->getReferences() @@ -214,4 +218,38 @@ ); } + /** + * @param Statement $statement + * + * @return string + */ + private function getReferencesHeading( Statement $statement ) { + $referenceCount = count( $statement->getReferences() ); + + if ( !array_key_exists( $referenceCount, $this->referenceHeadings ) ) { + $this->referenceHeadings[$referenceCount] = wfMessage( + 'wikibase-ui-pendingquantitycounter-nonpending', + wfMessage( + 'wikibase-statementview-referencesheading-pendingcountersubject' + )->numParams( $referenceCount )->text() + )->numParams( $referenceCount )->text(); + } + + return $this->referenceHeadings[$referenceCount]; + } + + /** + * @param string $serializedRank + * + * @return string + */ + private function getStatementRankText( $serializedRank ) { + if ( !array_key_exists( $serializedRank, $this->statementRankText ) ) { + $rankText = wfMessage( 'wikibase-statementview-rank-' . $serializedRank )->text(); + $this->statementRankText[$serializedRank] = $rankText; + } + + return $this->statementRankText[$serializedRank]; + } + } -- To view, visit https://gerrit.wikimedia.org/r/182455 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Icfd6ca13149987976317675d3394490f2e958011 Gerrit-PatchSet: 2 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Aude <aude.w...@gmail.com> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits