MediaWiki  1.34.0
benchmarkTitleValue.php
Go to the documentation of this file.
1 <?php
22 
23 require_once __DIR__ . '/Benchmarker.php';
24 
31 
35  private $titleFormatter;
39  private $titleParser;
40 
44  private $dbKey = 'FooBar';
48  private $titleValue;
52  private $title;
53 
57  private $toParse;
58 
59  public function __construct() {
60  parent::__construct();
61  $this->addDescription( 'Benchmark TitleValue vs Title.' );
62  }
63 
64  public function execute() {
65  $this->titleFormatter = MediaWikiServices::getInstance()->getTitleFormatter();
66  $this->titleParser = MediaWikiServices::getInstance()->getTitleParser();
67  $this->titleValue = $this->constructTitleValue();
68  $this->title = $this->constructTitle();
69  $this->toParse = 'Category:FooBar';
70  $this->bench( [
71  [
72  'function' => [ $this, 'constructTitleValue' ],
73  ],
74  [
75  'function' => [ $this, 'constructTitle' ],
76  ],
77  [
78  'function' => [ $this, 'constructTitleSafe' ],
79  ],
80  [
81  'function' => [ $this, 'getPrefixedTextTitleValue' ],
82  ],
83  [
84  'function' => [ $this, 'getPrefixedTextTitle' ],
85  ],
86  'parseTitleValue cached' => [
87  'function' => [ $this, 'parseTitleValue' ],
88  'setup' => [ $this, 'randomize' ],
89  ],
90  'parseTitle cached' => [
91  'function' => [ $this, 'parseTitle' ],
92  'setup' => [ $this, 'randomize' ],
93  ],
94  'parseTitleValue no cache' => [
95  'function' => [ $this, 'parseTitleValue' ],
96  'setupEach' => [ $this, 'randomize' ],
97  ],
98  'parseTitle no cache' => [
99  'function' => [ $this, 'parseTitle' ],
100  'setupEach' => [ $this, 'randomize' ],
101  ],
102  ] );
103  }
104 
108  protected function randomize() {
109  $this->dbKey = ucfirst( wfRandomString( 10 ) );
110  }
111 
112  protected function constructTitleValue() {
113  return new TitleValue( NS_CATEGORY, $this->dbKey );
114  }
115 
116  protected function constructTitle() {
117  return Title::makeTitle( NS_CATEGORY, $this->dbKey );
118  }
119 
120  protected function constructTitleSafe() {
121  return Title::makeTitleSafe( NS_CATEGORY, $this->dbKey );
122  }
123 
124  protected function getPrefixedTextTitleValue() {
125  // This is really showing TitleFormatter aka MediaWikiTitleCodec perf
126  return $this->titleFormatter->getPrefixedText( $this->titleValue );
127  }
128 
129  protected function getPrefixedTextTitle() {
130  return $this->title->getPrefixedText();
131  }
132 
133  protected function parseTitleValue() {
134  // This is really showing TitleParser aka MediaWikiTitleCodec perf
135  $this->titleParser->parseTitle( 'Category:' . $this->dbKey, NS_MAIN );
136  }
137 
138  protected function parseTitle() {
139  Title::newFromText( 'Category:' . $this->dbKey );
140  }
141 }
142 
143 $maintClass = BenchmarkTitleValue::class;
144 require_once RUN_MAINTENANCE_IF_MAIN;
RUN_MAINTENANCE_IF_MAIN
const RUN_MAINTENANCE_IF_MAIN
Definition: Maintenance.php:39
Title\newFromText
static newFromText( $text, $defaultNamespace=NS_MAIN)
Create a new Title from text, such as what one would find in a link.
Definition: Title.php:316
BenchmarkTitleValue
Maintenance script that benchmarks TitleValue vs Title.
Definition: benchmarkTitleValue.php:30
BenchmarkTitleValue\getPrefixedTextTitleValue
getPrefixedTextTitleValue()
Definition: benchmarkTitleValue.php:124
MediaWiki\MediaWikiServices
MediaWikiServices is the service locator for the application scope of MediaWiki.
Definition: MediaWikiServices.php:117
Maintenance\addDescription
addDescription( $text)
Set the description text.
Definition: Maintenance.php:348
BenchmarkTitleValue\$toParse
string $toParse
Definition: benchmarkTitleValue.php:57
BenchmarkTitleValue\$titleFormatter
TitleFormatter $titleFormatter
Definition: benchmarkTitleValue.php:35
BenchmarkTitleValue\randomize
randomize()
Use a different dbKey each time to avoid influence of Title caches.
Definition: benchmarkTitleValue.php:108
BenchmarkTitleValue\$dbKey
string $dbKey
Definition: benchmarkTitleValue.php:44
Benchmarker\bench
bench(array $benchs)
Definition: Benchmarker.php:50
BenchmarkTitleValue\$title
Title $title
Definition: benchmarkTitleValue.php:52
BenchmarkTitleValue\parseTitleValue
parseTitleValue()
Definition: benchmarkTitleValue.php:133
NS_MAIN
const NS_MAIN
Definition: Defines.php:60
BenchmarkTitleValue\parseTitle
parseTitle()
Definition: benchmarkTitleValue.php:138
BenchmarkTitleValue\getPrefixedTextTitle
getPrefixedTextTitle()
Definition: benchmarkTitleValue.php:129
BenchmarkTitleValue\__construct
__construct()
Default constructor.
Definition: benchmarkTitleValue.php:59
BenchmarkTitleValue\$titleParser
TitleParser $titleParser
Definition: benchmarkTitleValue.php:39
Title\makeTitle
static makeTitle( $ns, $title, $fragment='', $interwiki='')
Create a new Title from a namespace index and a DB key.
Definition: Title.php:586
TitleParser
A title parser service for MediaWiki.
Definition: TitleParser.php:33
NS_CATEGORY
const NS_CATEGORY
Definition: Defines.php:74
Title\makeTitleSafe
static makeTitleSafe( $ns, $title, $fragment='', $interwiki='')
Create a new Title from a namespace index and a DB key.
Definition: Title.php:613
BenchmarkTitleValue\execute
execute()
Do the actual work.
Definition: benchmarkTitleValue.php:64
Benchmarker
Base class for benchmark scripts.
Definition: Benchmarker.php:40
Title
Represents a title within MediaWiki.
Definition: Title.php:42
$maintClass
$maintClass
Definition: benchmarkTitleValue.php:143
TitleFormatter
A title formatter service for MediaWiki.
Definition: TitleFormatter.php:34
BenchmarkTitleValue\constructTitle
constructTitle()
Definition: benchmarkTitleValue.php:116
BenchmarkTitleValue\$titleValue
TitleValue $titleValue
Definition: benchmarkTitleValue.php:48
BenchmarkTitleValue\constructTitleSafe
constructTitleSafe()
Definition: benchmarkTitleValue.php:120
BenchmarkTitleValue\constructTitleValue
constructTitleValue()
Definition: benchmarkTitleValue.php:112
TitleValue
Represents a page (or page fragment) title within MediaWiki.
Definition: TitleValue.php:36
wfRandomString
wfRandomString( $length=32)
Get a random string containing a number of pseudo-random hex characters.
Definition: GlobalFunctions.php:274